gpt4 book ai didi

c# - Android和C#之间的加密

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:58:38 25 4
gpt4 key购买 nike

我正在使用以下 C# 源代码使用 AES (ECB 256) 加密纯文本:

public static string Encode(string PlainText)
{
byte[] Key = ASCIIEncoding.UTF8.GetBytes("12345678901234567890123456789012");
string encrypted = null;


RijndaelManaged rj = new RijndaelManaged();
rj.BlockSize = 256;
rj.KeySize = 256;
rj.Key = Key;
rj.GenerateIV();

byte[] IV = rj.IV;
rj.Mode = CipherMode.ECB;
rj.Padding = PaddingMode.Zeros;

try
{
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, rj.CreateEncryptor(Key, IV), CryptoStreamMode.Write))
{
using (StreamWriter sw = new StreamWriter(cs))
{
sw.Write(PlainText);
sw.Close();
sw.Dispose();
}

cs.Close();
cs.Dispose();
}

byte[] encryptArray = ms.ToArray();

encrypted = (Convert.ToBase64String(encryptArray));

ms.Close();
ms.Dispose();
}
}
catch (Exception ex)
{
throw ex;
}

finally
{
rj.Clear();
}

return encrypted;
}

我需要通过相同的算法解密/加密数据,但我不知道如何。

这是我的 Java 类(不工作):

 public static String encrypt(byte[] key, String cleartext, boolean base64) throws Exception
{
byte[] rawKey = key;
byte[] result = encrypt(rawKey, cleartext.getBytes());

// Base 64
if (base64)
return toBase64(result);

// Hex
return toHex(result);
}

public static String decrypt(byte[] key, String encrypted)
throws Exception
{
byte[] rawKey = key;
byte[] enc = toByte(encrypted);
byte[] result = decrypt(rawKey, enc);

return new String(result);
}

private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception
{
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");

cipher.init(Cipher.ENCRYPT_MODE, skeySpec);

byte[] encrypted = cipher.doFinal(clear);

return encrypted;
}

Java调用:

encrypt("12345678901234567890123456789012".getBytes(), "Example Message", true);

我不知道如何在 Java 中选择 block 大小或 PaddingMode.Zeros

¿有什么想法吗?

提前致谢

最佳答案

是的,问题是 AES 中128 位 block 大小的限制(请参阅“强与无限强度密码术”)。

最后,我使用了 GNU Crypto它有效!我已导入所有源代码并删除了不使用的代码。

如果有人想要清理过的源代码,他只需问我。

感谢您的帮助。

关于c# - Android和C#之间的加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4398874/

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