CIFRA DE TRANSPOSIÇÕES COLUNARES COM CHAVE NUMÉRICA - modelo

Alguem por acaso ai sabe como criar ou se já existem algum modelo de criptografia de cifra de transposiçoes.
Um modelo simples que pegue uma senha e criptografie ela usando cifra de transposições.

Cifra de transposição funciona assim:

[quote]TRANSPOSIÇÕES COLUNARES COM CHAVE NUMÉRICA

Este tipo de transposição é bem mais segura que a transposição colunar simples. Não é possível quebrá-la apenas determinando o número de colunas da matriz. Este processo de transposição é semelhante ao usado para obter sequências mistas de transposição.

A chave numérica geralmente é baseada numa palavra ou frase chave. Diferentemente das chaves usadas para obter transposições mistas, esta pode ter letras repetidas. Para produzir uma chave numérica a partir da chave, as letras são numeradas em ordem alfabética e as letras repetidas são numeradas em sequência da esquerda para a direita.

Por exemplo, a palavra chave BANANA resultará na chave numérica 415263
B A N A N A
4 1 5 2 6 3

Como nas transposições colunares simples, a matriz pode ou não ser preenchida completamente:

B A N A N A
4 1 5 2 6 3
A T A Q U E
C A N C E L
A D O

O resultado será TADQC ELACA ANOUE ou, se preenchidos os vazios, em duas versões: TADQC XELXA CAANO UEX ou simplesmente TADQC ELACA ANOUE.[/quote]

Comecei a fazer algo bemmmm simples para testar, mas como sou novo em JAVA já me tranquei ao preencher a matriz.
Segue o modelo:

[code]package Senha_Criptografada;

import java.util.ArrayList;

import javax.swing.JOptionPane;

public class transposicao {
static String key;
static String senha;

public static void main(String[] args) {
	
	key = JOptionPane.showInputDialog("Insira sua Key:");
	senha = JOptionPane.showInputDialog("Agora insira sua senha:");
	
	
	int tamKey = key.length();
	int tamSenha = senha.length();
	int aux = (Integer)(tamSenha/tamKey);

	String[][] keyCod = new String[aux][tamKey];

	int ct = 0;
	while (ct <= senha.length()) {
		for (int i = 0; i < senha.length(); i++) {
			for (int j = 0; j < key.length(); j++) {
				keyCod[i][j] = Character.toString((Character)senha.charAt(ct)).toUpperCase();
				ct++;
			}	
		}
	}
	System.out.print(keyCod);
}

}[/code]

Obrigado.

cara isso é um fracasso, ler isso me fez perceber que existe gente que nasceu pra coisa e gente que não sabe o que fazer da vida e entra na área pq gosta de passar tempo na frente do PC ou pensa que vai ganhar rios de dinheiro da noite pro dia…
Semestre passado o professor de criptografia passou essa e outras cifras, enquanto a maioria da sala ficava feito vc, com preguiça de PENSAR e procurando algo pronto ou alguém que fizesse pra eles, eu simplesmente fiz antes mesmo dele pedir em apenas 3 horas. e acho que isso foi demorar muito ainda. pow cara, que graça tem programar se todo desafio vc correr e pegar pronto na net? se vc quer mesmo seguir carreira como um programador n espere nada pronto, corra atrás!!!
Estou falando isso pq sua dúvida tem a ver com preguiça! e isso é algo que nenhum programador pode ter! além do mais, programador sem lógica de programação n é programador…

OK.
Consigui colocar a senha dentro da matriz. A problema é quando sobra celula na matriz ou quando tem caracteres de mais para a matriz. Saberia me dizer como resolver isso.

int ct = 0; for (int i = 0; i < senha.length(); i++) { for (int j = 0; j < key.length(); j++) { if(ct<=(senha.length()-1)){ keyCod[i][j] = Character.toString((Character)senha.charAt(ct)).toUpperCase(); ct++; } } }