发表于: 2019-11-12 23:17:51
1 919
今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)
1.封装一个EncryUtil工具类来封装加密解密类
1.1
/**
* @param text 需要加密的文本
* @return 加密后的的字符串
* @description 采用默认秘钥加密
* */
public static String encrypt(String text){
try {
return new Des().encrypt(text);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* @param text 需要解密的文本
* @return 解密后的文本
* @description 采用默认秘钥解密
* */
public static String decrypt(String text){
try {
return new Des().decrypt(text);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
1.2再编写encryFun时出现了点问题
public static String encryptFun(String text,String key){
try {
byte[] arrB = Des.encrypt2(text.getBytes(),key);
// return arrB;
return Des.byteArr2HexStr(arrB);
// return new String(arrB);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static String decryptFun(String text,String key){
try {
byte[] arrB = Des.decrypt2(Des.hexStr2ByteArr(text),key);
return new String(arrB);
// return Des.byteArr2HexStr(arrB);
// return new String(arrB);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
我采用将返回的byte数组转成16进制字符存放出去,在解密时将16进制字符串转成byte[]类型存储
明天计划的事情:
看看JWT如何shi
遇到的问题:
1.在解密的时候遇见了一个问题
这里加密后返回的字节数组不能以new String的形式返回出去,如果以new String的形式,在解密过程中会出错,原因我猜测是new String(arr).getByte()后得到的byte数组和arr不一致,可能和编码有关?,具体原因不明?
百度后好像是不能直接将加密后的字节数组转成字符串,否则解密时就会出现异常,但是别人说的异常和我遇到的不是一样,所以这里为什么不能以字符串的形式转换出去,而非得以16进制形式转换出去才可以,又或者将byte[]数组以base64编码的的形式转变
那么问题来了:DES加密后的byte[] 为什么不能以字符串形式直接返回呢????
收获:
评论