C# AES解密(替换以下Java AES解密)

手在键盘敲很轻 2019-08-21 08:14:00
这是Java AES解密方法
public static String decrypt(String cipherText, String aeskey) {
        byte[] keyBytes = BASE64.decode(aeskey + "="); 
        byte[] original;
        try {
            // 设置解密模式为AES的CBC模式
            Cipher cipher = Cipher.getInstance(AES_CBC_NO_PADDING);
            // AES密钥长度为16字节 (128位)
            SecretKeySpec keySpec = new SecretKeySpec(keyBytes, 0, 16, AES);
            IvParameterSpec iv = new IvParameterSpec(keyBytes, keyBytes.length-16, 16);
            cipher.init(Cipher.DECRYPT_MODE, keySpec, iv);
            // 使用BASE64对密文进行解码
            byte[] encrypted = BASE64.decode(cipherText);
            // 解密
            original = cipher.doFinal(encrypted);
            // 去除补位字符
            byte[] bytes = pkcs7unpadding(original);
            
            return new String(bytes, CHARSET);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
...全文
166 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
stherix 2019-08-22
  • 打赏
  • 举报
回复
byte[] keyBytes = Convert.FromBase64String(aeskey + "="); 
var key = keyBytes.Take(16).ToArray();
var iv = keyBytes.Skip(16).Take(16).ToArray();
var cipher = new RijndaelManaged
{
    Key = key,
    Mode = CipherMode.CBC,
    Padding = PaddingMode.PKCS7,
    IV = iv
};
var decryptor = cipher.CreateDecryptor();
byte[] data = Convert.FromBase64String(cipherText);
byte[] result = decryptor.TransformFinalBlock(data , 0, data.Length);
return Encoding.UTF8.GetString(result );
冰川711 2019-08-21
  • 打赏
  • 举报
回复
Key = Convert.FromBase64String(aeskey+"=")
冰川711 2019-08-21
  • 打赏
  • 举报
回复

        public static string decrypt(string cipherText, string aeskey)
        {
            var toEncryptArray = Convert.FromBase64String(cipherText);
            var rm = new System.Security.Cryptography.RijndaelManaged
            {
                Key = Convert.FromBase64String(aeskey),
                Mode = System.Security.Cryptography.CipherMode.CBC,
                Padding = System.Security.Cryptography.PaddingMode.PKCS7
            };
            var cTransform = rm.CreateDecryptor();
            var resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
            return Encoding.UTF8.GetString(resultArray);
        }

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧