微信AES-128-CBC加密解密
[TestClass]public class UnitTest1{[TestMethod]public void TestMethod1(){var key = "cheayeon";var iv = "encoding";var text = "sb sb ha ha ha";//对text,key iv 进行base64加密var enKey = Convert.ToBase64String(Encoding.UTF8.GetBytes(key));var enIv = Convert.ToBase64String(Encoding.UTF8.GetBytes(iv));var enText = Convert.ToBase64String(Encoding.UTF8.GetBytes(text));//加密var encryp = AesEncryp(enText, enKey,enIv);//解密var decryp = AesDecryp(encryp, enKey, enIv);}/// <summary>/// 加密密text/// 王剑锋 2018年7月7日09:58:34/// </summary>/// <param name="text">明文</param>/// <param name="key">秘钥,Base64串</param>/// <param name="iv">向量,Base64串</param>/// <returns></returns>public string AesEncryp(string text,string key,string iv){var aes = Aes.Create();//AES-128-CBC PKCS#7aes.Mode = CipherMode.CBC;aes.Padding = PaddingMode.PKCS7;aes.KeySize = 128;aes.BlockSize = 128;//Base64解密text,KEY,IV,不够16位填充0aes.Key = Padding16(Convert.FromBase64String(key),0);aes.IV = Padding16(Convert.FromBase64String(iv),0);//获取该算法规则下的加密器var encryp = aes.CreateEncryptor();//加密之前加一个Base64解密 ,要加密的数据var dataBytes = Convert.FromBase64String(text);//获取AES-128-CBC PKCS#7 密文var enData = encryp.TransformFinalBlock(dataBytes,0, dataBytes.Length);return Convert.ToBase64String(enData);}/// <summary>/// 解密text/// 王剑锋 2018年7月7日09:58:16/// </summary>/// <param name="text">密文</param>/// <param name="key">秘钥,Base64串</param>/// <param name="iv">向量,Base64串</param>/// <returns></returns>public string AesDecryp(string text, string key, string iv){var aes = Aes.Create();//AES-128-CBC PKCS#7aes.Mode = CipherMode.CBC;aes.Padding = PaddingMode.PKCS7;aes.KeySize = 128;aes.BlockSize = 128;//Base64解密text,KEY,IVaes.Key = Padding16(Convert.FromBase64String(key),0);aes.IV = Padding16(Convert.FromBase64String(iv),0);//获取该算法规则下的解密器var encryp = aes.CreateDecryptor();//加密之前加一个Base64解密 ,要加密的数据var dataBytes = Convert.FromBase64String(text);//获取AES-128-CBC PKCS#7 明文var enData = encryp.TransformFinalBlock(dataBytes, 0, dataBytes.Length);return Encoding.UTF8.GetString(enData);}/// <summary>/// 不够16位的整数倍,已指定字符填充/// </summary>/// <param name="array"></param>/// <param name="padding"></param>/// <returns></returns>public byte[] Padding16(byte [] array,byte padding){int group = (array.Length + 15) / 16;var newArray = new byte[group*16];for (int i = 0; i < newArray.Length; i++){newArray[i] = (i < array.Length ? array[i] : padding);}return newArray;}
转载于:https://www.cnblogs.com/chaeyeon/p/9276897.html
微信AES-128-CBC加密解密相关推荐
- Go Nodejs Java Aes 128 ECB加密解密结果保持一致
在多语言的生产环境下,常常是由一种语言进行加密而由另一种语言来进行解密,因此有必要保持各种语言之间加密解密算法的一致性.下面列出了Go,Nodejs,Java 的 Aes-128-Ecb的加密解密算法 ...
- java aes128加密解密_java AES 128 位加密解密算法
最近在做app后台的服务器,使用到AES加密解密算法,无奈网上的都不符合要求,于是自己借鉴着写了一个AES加密解密工具. 密钥长度问题 默认 Java 中仅支持 128 位密钥,当使用 256 位密钥 ...
- php aes 128位加密,php实现AES 128位加密的相关操作技巧分享
php实现AES 128位加密的相关操作技巧是什么?这篇文章主要介绍了PHP实现的AES 128位加密算法,结合实例形式分析了AES 128位加密的相关概念.原理及php实现AES 128位加密的相关 ...
- Vue前端和Java后端 联调使用AES 前后端加密解密
Vue前端和Java后端 联调使用AES 前后端加密解密 最近在项目中需要针对重要数据进行加密传输,在网上找了一大推加密方式 最终采用AES 加密 Java端 package com.zk.web.u ...
- angular和JAVA实现aes、rsa加密解密,前后端交互,前端加解密和后端JAVA加解密实现
今天实现了下AES和RSA加密解密,主要的功能是对前后端交互数据进行加密解密,为什么要用到两个算法呢,首先RSA默认的话加密长度是有限的100多个byte吧大约,并且需要公钥私钥,而AES加密没有限制 ...
- C#国密SM4 CBC加密解密
** C#国密SM4 CBC加密解密 在你得项目nuget引用程序集:KYSharp.SM 安装 2.0 版本,里面才有sm4的加密 ** static void Main(string[] args ...
- python aes 加盐 加密解密
python aes 加盐 加密解密 爬虫就是在学习的过程,前几天从某网站的js里学到的加密方式,通过下断点弄清加密原理后,用python复现一下,在这里和大家分享下 #--------引入模块--- ...
- AES 128位CBC加密解密(不使用固定IV)
安全检查时要求账号和密码加密后才能存到数据库中,要求加密算法如下: 1)分组密码算法:AES(密钥长度在128位及以上)(GCM或CBC模式) 2)流密码算法:AES(密钥长度在128位及以上)(OF ...
- AES CBC 加密解密(偏移量)
参考文章:AES加密解密(ECB模式) 工具:在线AES加密解密 使用固定的key package com.eshore.cloud.utils;import android.text.TextUti ...
- AES CBC加密/解密
简介 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的D ...
最新文章
- Mysql 修改 复杂的汇总_MySQL数据分析:复杂查询
- [学习笔记]03.字符串的扩展
- Linux之nginx配置文件的分析整理
- Go netpoller 网络模型之源码全面解析
- python自学笔记_python学习笔记(4)
- cc2530i2c可同时接受两个传感器的数据吗_汽车方向及维修_玉树沃尔沃S40方向机,宝马531电子方向机进水可以维修吗...
- 万字长文剖析 APM 系统?如何设计与实现?
- 微积分28-复合函数与隐函数的微分法
- css设置自适应屏幕高度
- gaster字体转换器_gaster语言翻译器
- 【python学习】python实现利用pygame绘画基本图形、显示图片,实现图形图片随机效果。python绘制行列图片
- TI 蓝牙4.0芯片 cc2540
- Random Walk 随机游走算法
- java.sql.SQLException: HOUR_OF_DAY: 2 -> 3
- 报错#vue-router#unknown custom element: <router-link> - did you register the component correctly?
- java jacob ocx_JAVA通过jacob调用ocx
- Linux下的常用命令(干货)
- Codec2入门:框架解析
- GBT25000.51-2016信息安全特性解读
- OSPF高级配置——NSSA区域与地址汇总