AES ECB PKCS7解密问题

  最近项目中使用到AES解密。由于客户那边提供的接口是通过AES加密过的。

  解密过程中发现了一个问题。直接解密的话解出来数据不对,所以,原字符串需要做些操作再解密。

  将16进制值转byte[]

  /// AES解密 
       /// </summary> 
       /// <param name="encryptStr">密文字符串</param> 
       /// <returns>明文</returns> 
       public static byte[] AESDecrypt(string encryptStr) 
       {
           encryptStr = encryptStr.Replace("\r\n", ""); //替换掉换行符号
           byte[] keys = Encoding.UTF8.GetBytes("秘钥");
           byte[] by = new byte[encryptStr.Length / 2];
           int j = 0;
           for (int i = 0; i < encryptStr.Length; i = i + 2)
           {
               by[j] = Convert.ToByte(encryptStr.Substring(i, 2), 16);
               j++;
           }
           return AES.Decrypt(keys, by);
       }

时间: 2024-11-03 03:43:25

AES ECB PKCS7解密问题的相关文章

C#调用Crypto++库AES ECB加解密

本文章使用上一篇<C#调用C++类库例子>的项目代码作为Demo.本文中,C#将调用C++的Crypto++库,实现AES和ECB加解密. 一.下载Crypto 1.进入Crypto的官网下载openssl.网址是: https://www.cryptopp.com/. 2.点击“DownLoad”,选择最新的可下载的版本即可.此时我下载的是cryptopp820.zip,如下图所示的. 3.解压 cryptopp820.zip. 4.打开cryptopp820文件夹中的cryptest.sl

golang AES/ECB/PKCS5 加密解密 url-safe-base64

因为项目的需要用到golang的一种特殊的加密解密算法AES/ECB/PKCS5,但是算法并没有包含在标准库中,经过多次失败的尝试,终于解码成功,特此分享: /* 描述 : golang AES/ECB/PKCS5 加密解密 date : 2016-04-08 author: herohenu */ package main import ( "bytes" "crypto/aes" "crypto/cipher" "encoding/

.NET/andriod/java/iOS AES通用加密解密

移动端越来越火了,我们在开发过程中,总会碰到要和移动端打交道的场景,比如.NET和android或者iOS的打交道.为了让数据交互更安全,我们需要对数据进行加密传输.今天研究了一下,把几种语言的加密都实践了一遍,实现了.NET,java(andriod),iOS都同一套的加密算法,下面就分享给大家. AES加密有多种算法模式,下面提供两套模式的可用源码. 加密方式: 先将文本AES加密 返回Base64转码 解密方式: 将数据进行Base64解码 进行AES解密 一.CBC(Cipher Blo

AES加密、解密(linux、window加密解密效果一致,支持中文)

转自: http://sunfish.iteye.com/blog/2169158 import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypto.BadPaddingException

AES/ECB/NoPadding 加减密

1 package unit; 2 3 import javax.crypto.Cipher; 4 import javax.crypto.spec.SecretKeySpec; 5 6 import org.apache.commons.codec.binary.Base64; 7 8 /** 9 * AES/ECB/NoPadding 加密 10 * @author jia 11 */ 12 public class AES_ECB { 13 private static String Pa

前端加密传输 crypto-js AES 加密和解密

配置: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0&q

AES 对称加解密

1.生成AES Key /** * AES根据密码生成Key * @param password * @return */ public static Key createKey(String password) { // 构造密码生成器,指定为AES算法 try { KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); // 生成128位的随机源 keyGenerator.init(128, new SecureRa

iOS开发之Objective-c的AES加密和解密算法的实现

原文:http://www.lidaren.com/archives/1470 高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法. 以下实现代码中分别为NSData和NSString增加了一个Category.使用时直接调用即可. 需要注意的是,AES并不能作为HASH算法,加密并解密后的结果,并不一定与原文相同,使用时请注意进行结果验算.例如解密原文的长度,格式规则等. NG实例 原文:170987350 密码:170 Objecti

DES对称加解密、AES RijndaelManaged加解密、Base64加密解密、MD5加密等操作辅助类 EncodeHelper

/// <summary> /// 使用默认加密 /// </summary> /// <param name="strText"></param> /// <returns></returns> public static string DesEncrypt(string strText) /// <summary> /// 使用默认解密 /// </summary> /// <pa