Кода -копия выглядит следующим образом:
/*String desede (3des) шифрование*/
Импорт java.security.security;
Импорт javax.crypto.cipher;
Импорт javax.crypto.secretkey;
Импорт javax.crypto.spec.secretkeyspec;
Import Sun.misc.base64decoder;
Import sun.misc.base64encoder;
открытый класс des3 {
Частная статическая финальная строка Algorithm = "desede"; // Определить алгоритм шифрования, доступный
// des, desede, блюда
// KeyByte - это ключ шифрования с длиной 24 байтов
// SRC является зашифрованным буфером данных (источник)
Public Static String EncryptMode (Byte [] KeyByte, Byte [] src)
{
пытаться
{
// генерировать ключ
SecretKey Desktop = New SecretKeySpec (KeyByte, Algorithm);
// шифрование
Шифр C1 = cipher.getInstance (алгоритм);
c1.init (cipher.encrypt_mode, Desktop);
// запустить шифрование
byte [] encryptedbytearray = c1.dofinal (src);
// после операции шифрования преобразовать Byte [] в строку BASE64
Base64encoder enc = new Base64encoder ();
return enc.encode (EncryptedByTearray);
}
Catch (java.security.nosuchalgorithmexception e1)
{
e1.printstacktrace ();
}
Catch (javax.crypto.nosuchpaddingexception e2)
{
e2.printstacktrace ();
}
Catch (java.lang.Exception e3)
{
e3.printstacktrace ();
}
вернуть ноль;
}
// KeyByte - это ключ шифрования с длиной 24 байтов
// SRC - зашифрованный буфер
Общественный статический байт [] Decryptmode (Byte [] keybyte, String src)
{
пытаться {
// генерировать ключ
SecretKey Desktop = New SecretKeySpec (KeyByte, Algorithm);
// расшифрование
Шифр C1 = cipher.getInstance (алгоритм);
c1.init (cipher.decrypt_mode, Desktop);
// перед операцией расшифровки
Base64decoder dec = new base64decoder ();
byte [] encryptedbytearray = dec.decodebuffer (src);
// Операция расшифровки преобразует строку базы64 в байт []
вернуть C1.dofinal (EncryptedByTearray);
} catch (java.security.nosuchalgorithmexception e1) {
e1.printstacktrace ();
} catch (javax.crypto.nosuchpaddingexception e2) {
e2.printstacktrace ();
} catch (java.lang.exception e3) {
e3.printstacktrace ();
}
вернуть ноль;
}
// конвертировать в шестнадцатеричную строку
public Static String byte2Hex (byte [] b) {
String hs = "";
String stmp = "";
for (int n = 0; n <b.length; n ++) {
stmp = (java.lang.integer.tohexstring (b [n] & 0xff));
if (stmp.length () == 1)
hs = hs + "0" + stmp;
еще
hs = hs + stmp;
if (n <b.length - 1)
hs = hs + ":";
}
вернуть hs.touppercase ();
}
Public Static Void Main (String [] args)
{
// Добавить новый алгоритм безопасности.
Security.addprovider (новый com.sun.crypto.provider.sunjce ());
Окончательный байт [] keybytes = {0x11, 0x22, 0x4f, 0x58, (byte) 0x88, 0x10,
0x40, 0x38, 0x28, 0x25, 0x79, 0x51, (байт) 0xcb, (байт) 0xdd,
0x55, 0x66, 0x77, 0x29, 0x74, (byte) 0x98, 0x30, 0x40, 0x36,
(байт) 0xe2};
String szsrc = "Это тест 3DES. Тест";
System.out.println («Стенд перед шифрованием:» + szsrc);
String oncoded = EncryptMode (Keybytes, szsrc.getbytes ());
System.out.println ("зашифрованная строка:" + кодировать);
byte [] srcbytes = decryptmode (keybytes, кодировать);
System.out.println ("расшифрованная строка:" + (new String (srcbytes)));
}
}