不少人对于 3DES 的算法有些陌生,尤其是从事金融类编程的用到的概率相对较大,网上
比较完整的例子也很少,因此,写了个比较完整的例子,供大家参考
eg:
1、利用 3DES 算法计算 MAC
2、利用 3DES 算法解加密一个 KEY
3、计算校验值
此代码采用双倍长密钥为例
[java]view plaincopyprint?
1. importjava.security.SecureRandom;
2. importjavax.crypto.Cipher;
3. importjavax.crypto.SecretKey;
4. importjavax.crypto.SecretKeyFactory;
5. importjavax.crypto.spec.DESKeySpec;
6. importjavax.crypto.spec.IvParameterSpec;
7.
8. importorg.apache.commons.lang3.ArrayUtils;
9.
10. /**
11. *
12. *
13. *@authorZhangYaMin
14. *
15. */
16. publicclassEncryptionMachine{
17.
18.
19.
20.
21. //初始向量GG
22. privatestaticStringivInfo="0000000000000000";
23.
24. privatestaticchar[]CHARARRAY={'0','1','2','3','4','5','6
','7','8','9','A','B','C','D','E','F'};
25. privatestaticbyte[]funStringToBcd(char[]data){
26. intlen=data.length;
27. if(len%2!=0||len==0){
28. thrownewRuntimeException("数据长度错误");