用于挑选和加密数据的类

EncryptedPickle的Python项目详细描述


encryptedpickle是一个python类,用于在支持的情况下对数据进行加密和签名。 对于版本、序列化、压缩和密码短语生成(循环)。

它的部分灵感来自iron,但不兼容。

示例用法

fromencryptedpickleimportencryptedpicklepassphrases={0:'Change me! CHange me! CHAnge me! CHANge me!''CHANGe me! CHANGE ME! CHANGE Me! CHANGE ME!'}data={'example':123,'test':'testing'}encoder=encryptedpickle.EncryptedPickle(signature_passphrases=passphrases,encryption_passphrases=passphrases)print("* data: %s"%data)sealed=encoder.seal(data)print("* sealed: %s"%sealed)unsealed=encoder.unseal(sealed)print("* unsealed: %s"%unsealed)

自定义示例

fromencryptedpickleimportencryptedpickle# You can use different passphrases for signature and encryptionsignature_passphrases={0:'change me! change me! change me! change me!''change me! change me! change me! change me!'}encryption_passphrases={0:'Change me! CHange me! CHAnge me! CHANge me!''CHANGe me! CHANGE ME! CHANGE Me! CHANGE ME!'}data={'example':123,'test':'testing'}encoder=encryptedpickle.EncryptedPickle(signature_passphrases,encryption_passphrases)encryption={# Add new encryption algorithm specification with id = 255.# Default algorithms can not be overridden so we must use some other# id, maybe best starting with 255 (maximum id) and decreasing by one# for next added algorithm.255:{# Algorithm name defined in EncryptedPickle.ALGORITHMS.'algorithm':'aes-256-cbc',# Salt size for PBKDF2 key.'salt_size':32,# Digest mode for PBKDF2 key.'pbkdf2_algorithm':'sha256',# Use 10 iterations in PBKDF2 key generation.'pbkdf2_iterations':10,},}encoder.set_algorithms(encryption=encryption)options={# Use above defined encryption algorithm (id = 255).'encryption_algorithm_id':255,# Use "gzip-deflate" (id = 1) algorithm for compression.## Be carefull with this option, because compression is applied before# encryption and "Crime" attack is possible if third party can modify# data that is encrypted. For more info see:## https://www.isecpartners.com/news-events/news/2012/september/details-on-the-crime-attack.aspx#'compression_algorithm_id':1,# Add timestamp to header (unencrypted).'flags':{'timestamp':True,},}encoder.set_options(options)sealed=encoder.seal(data)print("* sealed: %s"%sealed)unsealed,unsealed_options=encoder.unseal(sealed,return_options=True)print("* unsealed: %s"%unsealed)ifunsealed_options['info']['timestamp']:print("* timestamp: %d"%unsealed_options['info']['timestamp'])

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

推荐PyPI第三方库


热门话题
使用嵌套for循环的java阵列替代方案   java ActiveMQ 5.16.3 Windows和Hawtio登录问题   java如何将部署在elastic Benstape上的web应用程序与aws上的mysql数据库实例连接起来?   java创建x数量的线程,然后等待完成   Java2JSON支持   安卓 Java AsyncHttpClient使用什么来代替多端口   JMX:如何通过普通Java添加操作/属性的描述   java Resultset到数组并随方法返回   在Spring JPA中映射postgres数组时发生java错误   使用此代码,tomcat上的SSL出现java问题   java如何更改日历对象的格式   java如何将排序后的索引映射回我正在排序的集合的原始索引   java错误:找不到符号变量工具栏   更新1.6.0.33后,Mac上未加载macos Java小程序   java将ListView活动作为(this)传递给实例化对象ie ArrayAdapter可以吗?