【发布时间】:2013-05-18 19:29:09
【问题描述】:
我正在使用我自己的自定义加密方法开发一个安全应用程序,但在消息解密方面遇到了问题。
根据理论,必须填充输入以满足执行加密所需的位。但是即使在解密之后填充位仍然存在。
这是一个例子:
input (before padding) : q
input (after padding) : 113 0 0 0 0 0 0 0 (in Bytes)
然后我执行一些代码:
bytes[] a = encrypt(input);
bytes[] b = decrypt(a);
String output = "";
output = new String(b, "UTF-8");
System.out.println 的输出如下:
b : 113 0 0 0 0 0 0 0
output : q[][][][][][][]
我不知道如何删除填充位。我目前正在使用以下功能:
public String processOutput(String dtxt){
String result = "";
int l = dtxt.length();
for(int i=0;i<l-16;i++) result = result + dtxt.charAt(i);
for(int i=l-16;i<l;i++){
if((long)dtxt.charAt(i)!=0){
result = result + dtxt.charAt(i);
}
} return result;
}
但是这个函数只有在我把输出放到一个字符串时才有效。如果输出是一个文件(比如说一个图像文件)怎么办?解密后如何删除填充位?请帮忙。
【问题讨论】:
标签: java android cryptography padding