本文目录一览:
java 进行3DES 加密解密
【Java使用3DES加密解密的流程】
①传入共同约定的密钥(keyBytes)以及算法(Algorithm),来构建SecretKey密钥对象
SecretKey deskey = new SecretKeySpec(keyBytes, Algorithm);
②根据算法实例化Cipher对象。它负责加密/解密
Cipher c1 = Cipher.getInstance(Algorithm);
③传入加密/解密模式以及SecretKey密钥对象,实例化Cipher对象
c1.init(Cipher.ENCRYPT_MODE, deskey);
④传入字节数组,调用Cipher.doFinal()方法,实现加密/解密,并返回一个byte字节数组
c1.doFinal(src);
参考了:
如何用Java进行3DES加密解
public static String encryptKey(String mainKey,String plainKey){ String encryptKey = ""; try{ Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); String Algorithm = "DESede/ECB/NoPadding"; byte[] hb = hex2byte(mainKey.getBytes()); byte[] k = new byte[24]; System.arraycopy(hb,0,k,0,16); System.arraycopy(hb,0,k,16,8); SecretKey deskey = new SecretKeySpec(k, Algorithm); Cipher c1 = Cipher.getInstance(Algorithm); c1.init(Cipher.ENCRYPT_MODE, deskey); encryptKey = byte2hex(c1.doFinal(hex2byte(plainKey.getBytes()))); }catch(Exception e){ e.printStackTrace(); } return encryptKey; }public static String byte2hex(byte[] b) { String hs = ""; String stmp = ""; for (int n = 0; n b.length; n++) { stmp = Integer.toHexString(b[n] 0xFF); if (stmp.length() == 1) hs += ("0" + stmp); else hs += stmp; } return hs.toUpperCase(); } 3DES的加密密钥长度要求是24个字节,本例中因为给定的密钥只有16个字节,所以需要填补至24个字节。
java 3des 密钥是多少位
3DES算法是指使用双长度(16字节)密钥K=(KL||KR)将8字节明文数据块进行3次DES加密/解密。如下所示: Y = DES(KL)[DES-1(KR)[DES(KL[X])]] 解密方式为: X = DES-1 (KL)[DES (KR)[ DES-1 (KL[Y])]] 其中,DES(KL[X])表示用密钥K对数据X进行DES加密,DES-1 (KL[Y])表示用密钥K对数据Y进行解密。 SessionKey的计算采用3DES算法,计算出单倍长度的密钥。表示法为:SK = Session(DK,DATA) 3DES加密算法为: VOID 3DES(BYTE DoubleKeyStr[16], BYTE Data[8], BYTE Out[8]) { BYTE Buf1[8], Buf2[8]; DES (DoubleKeyStr[0], Data, Buf1); UDES(DoubleKeyStr[8], Buf1, Buf2); DES (DoubleKeyStr[0], Buf2, Out); }