情节:
多功能设备板子的密码键盘的调试程序
需要android上进行密钥的3des和des加密用户密钥和主密钥,发送给密码键盘(8位密钥为des,16位为3des)(java的3des为24为密钥,这就要补位下面有提到)
这两个加密的原理我不知道,最近才用到一次,记录下使用的方法和注意的东西:
注意:在使用上调用的函数没什么区别这两个,只有一个不同,3des的密钥需要24位(c代码的话只要16位,所以需要补位,16位的密钥的前八位,组成24位),des的密钥需要8位(des加密,就不需要补位,和去掉密文的后八位),
而且如果用c代码解密的话,需要去掉密文的后八位,java库函数自动增加的,不然c代码没法解密。
使用代码:
package com.start.android.usbserial.tools;
import java.io.UnsupportedEncodingException;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import android.util.Log;
/**
* SecretUtils {3DES加密解密的工具类 }
*
* @author dengzt
* @date 2013-08-1
*/
public class SecretUtils {
// 定义加密算法,有DES、DESede(即3DES)、Blowfish
public static final String Algorithm3DES = "DESede";//0
public static final String AlgorithmDES = "DES";//1
//约定密钥
private static final byte[] FIX_KEY = { (byte) 0xFF,
(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
(byte) 0xFF, (byte) 0xFF,