gpt4 book ai didi

java - 如何在JAVA或Android中加解密UTF-8?

转载 作者:行者123 更新时间:2023-11-30 03:25:46 25 4
gpt4 key购买 nike

我使用此算法在 android 中加密和解密数据。但是当使用 utf-8 字符时......会显示此错误:[encrypt] data not block size aligned。

我使用此算法进行加密和解密:https://snipt.net/raw/ee573b6957b7416f28aa560ead71c3a2/?nice

我的代码:

HttpClient client = new DefaultHttpClient();

HttpPost post = new HttpPost(ServerIP.frooshgah_URL);
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
JSONObject json = new JSONObject();



try {
json.put("UserId", "0s");
json.put("N_frooshgah", N_frooshgah);
json.put("N_masol", N_masol);
json.put("N_makan", N_makan);
json.put("address", address);
json.put("tel", tel);
json.put("time_baz", time_baz);
json.put("time_baste", time_baste);
json.put("tavzihat", tavzihat);
json.put("tag", tag);
json.put("categori", "پوشاک");
json.put("city", city);
json.put("lat", lat);
json.put("long", Long);

} catch (JSONException e3) {
// TODO Auto-generated catch block
e3.printStackTrace();
}

MCrypt mcrypt = new MCrypt();
String encrypted = "";
try {

encrypted = MCrypt.bytesToHex(mcrypt.encrypt(json.toString()));
//encrypted = encryption.hexToString(json.toString(), 2);
//key = UUID.randomUUID().toString().replaceAll("-", "");
//encrypted=Crypto.encrypt(json.toString(),key);


} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

如何解决这个问题?

谢谢

最佳答案

首先,我看到您使用的MCrypt 类提供了源代码。下载源代码并将其添加到您的项目中,并将 padString(string) 方法修改为:

private static String padString(String source){
char paddingChar = ' ';
int size = 16;
int x = source.getBytes(Charset.forName("UTF-8")).length % size;
int padLength = size - x;

for (int i = 0; i < padLength; i++)
{
source += paddingChar;
}

return source;
}

这将允许代码在使用 UTF-8 作为 charset 时执行。如果您想“改进”库以支持多个字符集,请考虑将 charset 参数添加到类的 encrypt/decrypt 方法中。

关于java - 如何在JAVA或Android中加解密UTF-8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18279818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com