/**
* El programa obté el text i la clau, elimina els espais i els passa a majúscules.
* No té en compte caràcters especials (ç, ñ, tildes, etc...). És barruer i es
* podria fer millor... però aquesta no és una classe de metodologia de programació, no? ;)
*/
package blog.
crypto;
public class Vigenere
{
private String eliminarEspais
( String st
) {
String _st =
new String();
for (int i =
0; i < st.
length(); i++
) {
if ( st.
charAt(i
) !=
' ' ) {
_st += st.
charAt(i
)+
"";
}
}
return _st;
}
private void execute
( String text ,
String clau
) throws Exception {
char[] _text =
new char[ text.
length() ];
char[] _clau =
new char[ _text.
length ];
//xifrem el missatge
for ( int i =
0 ; i < text.
length() ; i++
) {
char t = text.
charAt(i
);
char c = clau.
charAt( i % clau.
length() );
int aux =
(int)t;
int aux2 =
(int)c;
aux -=
65;
aux2 -=
65;
_text
[i
] =
(char)(((aux + aux2
) %
26) +
65);
}
System.
out.
println("Missatge: " + text
);
System.
out.
println("Clau: " + clau
);
System.
out.
print("Criptograma: ");
for (int i =
0; i < _text.
length; i++
) {
System.
out.
print(""+_text
[i
]);
}
}
/**
* @param args
*/
public static void main
(String[] args
) {
// TODO Auto-generated method stub
Vigenere v =
new Vigenere
();
try {
if ( args.
length !=
2 ) {
System.
out.
println("Ús: java blog.crypto.Vigenere \"text\" clau");
System.
exit(0);
}
v.
execute( v.
eliminarEspais(args
[0]).
toUpperCase(), v.
eliminarEspais(args
[1]).
toUpperCase() );
}
catch ( Exception ex
) {
System.
out.
println("ERROR:: " + ex.
toString());
}
}
}