AES补位填充的一个问题

AES加密支持多种填充方式,NoPadding,PKCS5Padding,ISO10126Padding,ZerosPadding,PKCS7Padding。

其中PKCS7Padding 就是数据个数最后少几个就填充多少个数,具体的做法可以:数据的个数先取余16,然后16减去余数。

例如{1,2,3,4,5,6,7,8,9},总共9个数值,取余16后是9,需要补充7个7,则最后数据变为{1,2,3,4,5,6,7,8,9,7,7,7,7,7,7,7}

需要特别注意一种情况如果数据的个数刚好是16的倍数,那就要在补充16个字节(一定要)。例如{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},填充后的数据是{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}

ZerosPadding就是缺少多少位就补充多少个0,基本流程相同。

时间: 2024-11-03 05:32:58

AES补位填充的一个问题的相关文章

AES对称加密算法原理

原著:James McCaffrey 翻译:小刀人 原文出处:MSDN Magazine November 2003 (Encrypt It) 本文的代码下载:msdnmag200311AES.exe (143KB) 本文假设你熟悉 C# 和 位(bit)操作. 摘要 AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范.它被预期能成为人们公认的加密包括金融.电信和政府数字信息的方法.本文展示了AES的概貌并解析了它使用的算法

原创:微信小程序java实现AES解密并获取unionId

来自:微信小程序联盟 如果大家使用小程序的同时还在使用公众号的话,可能会用到unionId这种功能,由于公司业务需要,我们需要使用unionId,具体使用方法,请参考微信开放平台的说明,但是在微信小程序的文档中只给出了部分语言实现的源码,竟然没有java的,小程序的开发人员是有多么懒.难道大家都不用java写后台??? 什么鬼,然后开始了各种AES踩坑之路,其实参考了很多的网上的教程,再次不能一一列出来给大家了,(因为我写这篇文章的时候,已经是解决问题一周以后了),也收到管理员的很多帮助,再次写

java AES加密

对称加密算法 定义:在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去.收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文.在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥. 优点:算法公开.计算量小.加密速度快.加密效率高. 缺点: (1)交易双方都使用同样钥匙,安全性得不到保证. (

AES加密CBC模式兼容互通四种编程语言平台【PHP、Javascript、Java、C#】

先简单从百度找来介绍: ? 1 2 3 4 5 6     密码学中的高级加密标准(Advanced Encryption Standard,AES),又称高级加密标准Rijndael加密法, 是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界 所使用.经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日 发布于FIPS PUB197,并在2002年5月26日成为有效的标准.2006年,高级加密标准已然成为对

讲讲网络模块中加解密那点儿事--AES+BASE64

这次想来讲讲网络安全通信这一块,也就是网络层封装的那一套加密.解密,编码.解码的规则,不会很深入,但会大概将这一整块的讲一讲. 之所以想写这篇,是因为,最近被抽过去帮忙做一个 C++ 项目,在 Android 中,各种编解码.加解密算法官方都已经封装好了,我们要使用非常的方便,但在 C++ 项目中很多都要自己写. 然而,自己写是不可能的了,没这么牛逼也没这么多时间去研究这些算法,网上自然不缺少别人写好的现成算法.但不同项目应用场景自然不一样,一般来说,都需要对其进行修修改改才能拿到项目中来用.

[ app运营 ] 一个新的App该如何推

由于经常写关于App推广的事情,经常有朋友打电话过来咨询我关于新的App的推广事宜,有的是旅游的app,有的是女性的app,有的是社交类的,问的问题也是各种各样,有的说没有预算,怎么推广,有的说有点预算但是不多怎么推广,经常电话给朋友们解答,索性今天我就把我的思路写出来,以飨初进行业做推广的朋友,如果是行业高人,可以略过. 先说下初步的推广思路,一个新的App刚出来,无论有没有预算都可以按照这样来.第一步:为你的App建立一条百科. 刚出来的app在网络上肯定是一篇空白,网络上还没有任何关于新的

ios安全性---AES加密

数据加密在解密在软件开发过程中举足轻重的作用,可能有的公司在加密的时候有自己公司内部一套设计的算法,而在这方面不想浪费太大精力就可以去考虑使用第三方提供的加密算法,如AES加密算法,本篇内容介绍开源中国iOS客户端使用ASE算法加密密码: AES   GitHub 下载地址  https://github.com/Gurpartap/AESCrypt-ObjC 对一个比较大的工程我们可能都不知道某个类库或者方法在哪被使用,但是智能的Xcode给我们提供了一个全局搜索的功能,我们可以在真个工程中来

Java 关于密码处理的工具类[MD5编码][AES加密/解密]

项目中又遇到了加密问题,又去翻了半天,然后做测试,干脆就把常用的两类小结一下. 1.第一种所谓的MD5加密 其实也不算加密,只是基于Hash算法的不可逆编码而已,等于说,一旦经过MD5处理,是不可能从编码后的字符串反推回去的. MD5的方法是基于散列的.本身信息不全.理论上是不能还原成唯一字符串的. 网上所谓的解密,也只是拥有一个足够大的字典映射,将编码前的源字符和编码后的目标字符关联起来而已,大多数常见的还行,复杂点的估计就会话费很长时间,有兴趣的可以试试. 至于MD5的用法,在初次录入的时候

对称密码-分组密码-AES

AES产生背景: DES的安全性和应用前景受到挑战,因此需要设计一个高保密性能的.算法公开的.全球免费使用的分组密码算法,用于保护敏感信息,并希望以此新算法取代DES算法,称为新一代数据加密标准,取名为高级数据加密标准(AES) AES算法并不是一个具体的算法,而是一个算法的标准,它的要求和评估准则: 1.AES基本要求:比DES快且比DES安全,分组长度为128比特,密钥长度为128/192/256. 2.安全性评估:算法输出的随机性好,抗密码分析能力强,并且有可靠的数学基础. 3.成本估计准