没有项目描述

shamir的Python项目详细描述


沙米尔


快速、安全、纯python实现shamir的秘密共享算法。

https://en.wikipedia.org/wiki/shamir%27s\u秘密共享


为什么要使用它


shamir的秘密共享对于提供“n of m”层很有用。
例如,密码恢复安全问题可以通过加密方式解决
使用此算法实现。安全问题的答案是
通过一个密钥派生函数(kdf)或散列,每个函数都用于
加密另一个秘密。那么,11个保安中有5个的答案
要找回这个秘密,提问是不可能的。

如何使用


…代码块::python
secret,shares=make_random_secret(3,5)秘密
生成共享,以便5人中的3人可以恢复机密
secret=恢复机密(共享)


shamir的秘密共享算法在整数x,y点上运行,
它存储的秘密是一个随机整数。为了有用,它必须
结合其他算法。下面是一个高级示例:

…代码块::python
encrypt、decrypt、hash和kdf是外部函数

def two_of_three_encrypt(明文、pw0、pw1、pw2):
“给定一个明文,对其进行保护,以便将来任何2个都可以访问”
secret,shares=shamir.make_random_共享(2,3)
定义加密共享(share,pw):
返回encrypt(密钥=kdf(pw),明文=repr(share))
返回(
加密(密钥=哈希(十六进制(机密)),明文=明文))+元组(
[加密(密钥=kef(pw),明文=repr(share))
对于pw,共享zip(pw0,pw1,pw2,shares)]

定义三取二解密(加密,pwa,pwb):
“恢复明文,给出用于保护的3个密码中的2个”
密文,共享=加密的[0],加密的[1:]
键a,键b=kdf(pwa),kdf(pwb)
解密的共享空间=[]
对于股份:
对于密钥输入(keya,keyb):
尝试:
解密的共享。附加(
解密(密钥=密钥,密文=共享)
例外情况:
通过
如果len(解密的共享)<;2:
raise valueerror('密码错误')
返回解密(
key=hash(十六进制(shamir.recover_secret(解密的_共享)),
密文=密文)


欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javajaxb在嵌套节点中生成xmlns:xsi声明   java重定向到youtube以上传jsp上可用的视频   java提高了JVM和ANT的性能   java如何将返回的JSON数据放在HTML表单中   java如何发送XWWWFORMURLENCODE在重新授权   java为什么jvm XX:+EliminateAllocations失败   堆移除和重建方法?(爪哇)   Stanford NPL in Spark(Scala)应用程序运行到Java堆空间(Java.lang.OutOfMemoryError)   调试java中打开/关闭println的任何方式(详细模式)   java IntelliJ在鼠标悬停时显示JavaDocs工具提示   Olingo Odata Java中的自动扩展选项   json将postgres文本arry转换为java列表?   oop需要帮助推断Java代码   复选框的java添加操作侦听器AbstractTableModel   java如何从公共静态void main(String[]args)传递值   java从数据库中获取大值   java Processing 2.0电影从jar运行时无法打开电影文件   java如何在不使用应用程序的情况下刷新活动?   尝试将JSON解析为ListView时的Android:JSON parse:null对象引用