AES-128 ECB 加密有感

2024-06-13 02:58
文章标签 aes 加密 有感 128 ecb

本文主要是介绍AES-128 ECB 加密有感,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近要搞一个加密。很是蛋疼。

原本单片机和上位机发送数据就是非常简单的。

这个项目相当复杂。每次数据命令都差不多1K,一次数据都要1K以上。是通过GPRS发送的。

这些难缠的问题再前一阶段已经解决了。

现在老师,还让我们做AES加密。是对我们做控制的人来说还确实有点难度啊 。

在网上找了一大堆资料,总有把AES加密有点弄懂了。这里推荐一个人写的博客。再次非常感谢这位大侠。http://hi.baidu.com/mallor/item/89dad214d1f1fe0dd1d66d33

写的详单详细。

我再啰嗦一下,我对AES的心得。

其实AES就是对16byte(128bit)数据进行加密的过程。说白了就是把128位通过一系列的变化变成另一个128数据。

这里主要用到2个关键的东西。密钥(key)这个是绝对不能省的。key要先扩张,然后进行10次的行列变化,与数据进行抑或操作。最终才能得到加密后的数据。

此位还有一个东西是非常让我困惑的,就是初始向量(IV)。这个地方自己当时也纳闷了很久,不知道怎么样。其实说真的,还真可以不用他。用她只是可以把加密变得更难破解。

那我就来具体说一下怎么用。

呵呵 废话有点多了。

u8 data[16]={ 0x00,0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b,0x0c, 0x0d, 0x0e, 0x0f};

u8IV[16]={ 0x30, 0x31, 0x32, 0x33,
  0x34, 0x35, 0x36, 0x37,
  0x38, 0x39, 0x61, 0x62,
  0xd63, 0x64, 0x65,0x66};

其实只要把

 for(i=0;i<16;i++)
 {
  data[i]=data[i]^IV[i];
 }

然后再把data作为新的数据加密就OK了。

当然你也可以不用他。

那么如果数据不是16的倍数改怎么办呢。这里我们就用到的数据扩张

AES支持支持几种填充:NoPadding,PKCS5Padding,ISO10126Padding,PaddingMode.Zeros;PaddingMode.PKCS7;

这里要说明一下PKCS5Padding和PKCS7Padding是一样的。

详细大家可以参考http://www.cnblogs.com/midea0978/articles/1437257.html

我也再说一下PKCS7 就是数据少几个就填充几个。

比如数据{1,2,3,4,5,6,7,8,9,10}

少了6个

那么就填充6个6(注意是0x06,而不是字符6,字符6实际上是0x36)

{1,2,3,4,5,6,7,8,9,10,6,6,6,6,6,6}

注意一定要是16个数据(1个数据是8位,这样就是128位)这样才能进行AES加密。

切记。

PaddingMode.Zeros

这个填充方式,个人比较喜欢。就是在后面补充0.

无论缺多少就补多少个0。

再提醒一下就是如果刚满16个,那就要在补充称16个字节。一定要比原先的多。(每种补充都要满足这样。这里非常容易被忽略).

也就是说如果{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}

PaddingMode.Zeros模式

就要补充称{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}

PKCS7Padding模式就要{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16}.这样再代入加密算法才是最正直的AES。

祝大家好运

http://www.oschina.net/code/snippet_242957_9931

这是C#写的。大家可以参考下。

C++的程序 http://hi.baidu.com/mallor/item/89dad214d1f1fe0dd1d66d33

这2个地方都非常好。

总之遇到困难,觉得不能退缩。要一步一步往前走,相信前途一定会是光明的。

我就是这样从一点也不知道然后在把C,和C#的加密解密方法给统一对应起来。C#都是集成的,引用非常简单。C里面就必须彻底搞清楚,才能用C加密的东西在C#下可以正常解密!!!

这篇关于AES-128 ECB 加密有感的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1056085

相关文章

Java中的密码加密方式

《Java中的密码加密方式》文章介绍了Java中使用MD5算法对密码进行加密的方法,以及如何通过加盐和多重加密来提高密码的安全性,MD5是一种不可逆的哈希算法,适合用于存储密码,因为其输出的摘要长度固... 目录Java的密码加密方式密码加密一般的应用方式是总结Java的密码加密方式密码加密【这里采用的

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

三相直流无刷电机(BLDC)控制算法实现:BLDC有感启动算法思路分析

一枚从事路径规划算法、运动控制算法、BLDC/FOC电机控制算法、工控、物联网工程师,爱吃土豆。如有需要技术交流或者需要方案帮助、需求:以下为联系方式—V 方案1:通过霍尔传感器IO中断触发换相 1.1 整体执行思路 霍尔传感器U、V、W三相通过IO+EXIT中断的方式进行霍尔传感器数据的读取。将IO口配置为上升沿+下降沿中断触发的方式。当霍尔传感器信号发生发生信号的变化就会触发中断在中断

秋夜思故人有感

秋夜思故人有感 西楼月影碎,轩窗烛泪灰。门前小犬吠,疑是故人归。

3.比 HTTP 更安全的 HTTPS(工作原理理解、非对称加密理解、证书理解)

所谓的协议 协议只是一种规则,你不按规则来就无法和目标方进行你的工作 协议说白了只是人定的规则,任何人都可以定协议 我们不需要太了解细节,这些制定和完善协议的人去做的,我们只需要知道协议的一个大概 HTTPS 协议 1、概述 HTTPS(Hypertext Transfer Protocol Secure)是一种安全的超文本传输协议,主要用于在客户端和服务器之间安全地传输数据

ja-netfilter的前世今生和非对称加密的欺骗原理

文章目录 ja-netfilter起源官网插件插件配置文件插件的综合应用更多用法 非对称加密欺骗原理非对称加密和数字证书激活过程和欺骗手段分析代码示例第一步:生成自签名证书脚本第二步:使用自签名证书对产品激活信息进行签名 样例数据样例激活码(注:用于代码演示,直接粘贴到JetBrains 家 IDE 中无法完成激活!不用试,肯定提示无效,无法激活!!)样例power.conf(配合ja-ne

Linux加密框架设计与实现

本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:原文作者是独孤九贱大佬 原文地址:http://bbs.chinaunix.net/thread-3627341-1-1.html

Android的登陆MD5加密

1:导入代码 public class MD5Util {private static final String TAG = "MD5Util";/**** MD5加码 生成32位md5码*/public static String string2MD5(String inStr) {Log.e(TAG, "string2MD5: -------------------------");Mess

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html