栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用AES + CTR的PyCrypto问题

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用AES + CTR的PyCrypto问题

counter
必须返回相同的解密,因为它没有加密,你直觉,所以,一个( 不安全AT ALL )的方式来做到这一点是:

>>> secret = os.urandom(16)>>> crypto = AES.new(os.urandom(32), AES.MODE_CTR, counter=lambda: secret)>>> encrypted = crypto.encrypt("aaaaaaaaaaaaaaaa")>>> print crypto.decrypt(encrypted)aaaaaaaaaaaaaaaa

点击率是一种 分组 密码,因此“ 16次”约束似乎很自然,这让您感到惊讶。

当然,在每次调用中返回 相同
值的所谓“计数器”是完全不安全的。不需要花费太多就可以做得更好,例如:

import arrayclass Secret(object):  def __init__(self, secret=None):    if secret is None: secret = os.urandom(16)    self.secret = secret    self.reset()  def counter(self):    for i, c in enumerate(self.current):      self.current[i] = c + 1      if self.current: break    return self.current.tostring()  def reset(self):    self.current = array.array('B', self.secret)secret = Secret()crypto = AES.new(os.urandom(32), AES.MODE_CTR, counter=secret.counter)encrypted = crypto.encrypt(16*'a' + 16*'b' + 16*'c')secret.reset()print crypto.decrypt(encrypted)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/639062.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号