密码学
辽宁大学
毕业于朝阳科技大学
展开
-
cpu gpu tpu
TPU:张量处理单元GPU: 图形处理器CPU:中央处理器原创 2021-05-24 08:41:48 · 107 阅读 · 0 评论 -
python与softhsm库链接后的实例1
import pkcs11import osimport pkcs11# Initialise our PKCS#11 library#lib = pkcs11.lib(os.environ['PKCS11_MODULE']) #这个是原先的程序的代码,是从环境变量中获取的lib库(共享库so,win下是dll文件)lib = pkcs11.lib('/usr/local/lib/softhsm/libsofthsm2.so')print(lib)#输出库的信息#exit()相当于加了个断.原创 2021-01-03 22:14:43 · 243 阅读 · 2 评论 -
Softhsm2的安装和使用
windows版本安装:win下有两种方式:一种是msi安装方式,一种是压缩包方式。方法很简单,详情请参照Github地址SoftHSM2 for Windows====================SoftHSM is an implementation of a cryptographic store accessible through a PKCS#11 interface. You can use it to explore PKCS#11 without having原创 2021-01-03 21:04:34 · 2444 阅读 · 2 评论 -
pki和ca了一点理解
相关概念PKI:Public Key Infrastructure,公钥基础设施。 CA:Certificate Of Authority,认证中心。 数字证书:提供了一种发布公钥的简便途径; 一个数字证书包括:拥有者身份信息、公钥、CA数字签名、有效期等其他信息。 数字签名:用来确认信息发送者的身份,保证信息的完整性和抗否认性。数字签名图1 数字签名数字签名的生成:对于要传输的消息原文使用消息摘要算法(MD5、SHA)生成消息摘要,发送方使用自己的私钥对摘要进行加密,生成数字签名转载 2020-10-29 14:02:35 · 800 阅读 · 1 评论 -
安全多方计算代码python版本
#!/usr/bin/env python# coding -*- utf:8 -*-import mathimport random'''百万富翁问题实现自己生成公钥私钥并解密加密算法无安全性'''# 获取小于等于指定数的素数数组def get_prime_arr(max): prime_array = [] for i in range(2, max): if is_prime(i): prime_array.app.原创 2020-10-09 18:27:39 · 2403 阅读 · 4 评论 -
群签名技术的理解和总结
定义一个群G,G = {U1, U2,...,Ut}。其中群成员可以代表群进行签名。C 表示密钥生成中心KGC。准备阶段这个阶段,C会生成各个群成员的私钥和共同拥有的公钥。(缺少的一会在补充)主要步骤如下:分为9步1.选择两个大素数p和q。令p = u1rp1+1且q = u2rq1+1。其中r、p1、q1都是素数。u1, u2 ∈ Z with gcd(u1, u2) = 2(gcd表示最大公约数)。令u1=2v1,u2=2v2。且v1,v2为质数。r为设定的比特长度2.计算n ...原创 2020-09-16 15:44:00 · 3029 阅读 · 3 评论 -
环签名说的比较的好的一篇文章
环签名技术环签名是一种签名技术,直白来说,通常是有一组公钥,签名方知道一组公钥中某一公钥所对应的私钥(只需知道一个即可)。这样,他就可以使用这一组公钥和那个对应的私钥生成一个环签名。验证者可以验证确实是这组公钥中某个私钥的拥有者生成的环签名,但是却不知道是哪个公钥对应的私钥。环签名的一个典型的应用场景是匿名举报。在一个组织内,组织内的举报人可以使用其他成员的公钥联合自己的公私钥对一次举报进行签名,管理人(验证者)会看到确实是组织内的人发起了这样的举报,但管理人不会知道具体是哪一个成员发起的举报。如此转载 2020-09-01 14:31:55 · 686 阅读 · 0 评论 -
PEKS代码和理解
此代码在windows环境下没成功,主要是因为charm安装包的原因。在linux成功啦#coding=utf-8from charm.toolbox.pairinggroup import PairingGroup, ZR, G1, G2, GT, pairimport hashlibHash1pre = hashlib.md5def Hash1(w): # 先对关键词w进行md5哈希 hv = Hash1pre(str(w).encode('utf8')).hexdiges.原创 2020-08-29 19:33:06 · 1206 阅读 · 2 评论 -
RSA算法理解和python实现
全称:Rivest-Shamir-Adleman,RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。它被普遍认为是目前最优秀的公钥方案之一。RSA是第一个能同时用于加密和数字签名的算法,它能够抵抗到目前为止已知的所有密码攻击。Python代码:# -*- coding: UTF-8 -*-# reference codes: https://www.jianshu.com/p/7a4645691c68import base64import rsafrom rsa原创 2020-08-29 14:24:26 · 745 阅读 · 0 评论 -
ECC理解和python代码实现
全称:椭圆曲线加密(Elliptic Curve Cryptography),ECC加密算法是一种公钥加密技术,以椭圆曲线理论为基础。利用有限域上椭圆曲线的点构成的Abel群离散对数难解性,实现加密、解密和数字签名。将椭圆曲线中的加法运算与离散对数中的模乘运算相对应,就可以建立基于椭圆曲线的对应密码体制。Python代码:# -*- coding:utf-8 *-# author: DYBOY# reference codes: https://blog.dyboy.cn/websecurity/1.原创 2020-08-29 08:47:06 · 6494 阅读 · 0 评论 -
RSA操作中的公钥和私钥的生成
使用的系统是windows软件openssl(下载地址:https://slproweb.com/products/Win32OpenSSL.html)使用下载安装windows平台openssl密钥生成工具,执行安装目录bin下的"openssl.exe",执行后弹出命令窗口1.生成私钥输入"genrsa -out rsa_private_key.pem 1024",回车,命令窗口如下,在bin目录下多了一个rsa_private_key.pem文件,将这个文件通过文本编辑器打开,将看原创 2020-08-28 20:48:31 · 4752 阅读 · 0 评论 -
AES理解和python实现
全称:高级加密标准(英语:Advanced Encryption Standard),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。Python代码:import base64from Crypto.Cipher import AES'''AES对称加密算法'''# 需要补位,str不是16的倍数那就补足为16的倍数def add_to_16(value): while len(value).原创 2020-08-28 18:55:55 · 755 阅读 · 0 评论 -
from Crypto.Cipher import AES 安装不上这个包的解决方法
解决方法:pipinstall pycryptodome原创 2020-08-28 18:53:18 · 1483 阅读 · 0 评论 -
DES加密算法与python实现
全称:数据加密标准(Data Encryption Standard),属于对称加密算法。DES是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法。它的密钥长度是56位(因为每个第8 位都用作奇偶校验),密钥可以是任意的56位的数,而且可以任意时候改变。Python代码:import binasciifrom pyDes import des, CBC, PAD_PKCS5# 需要安装 pip install pyDesdef des_encrypt(secre.原创 2020-08-28 16:00:05 · 814 阅读 · 0 评论 -
HMAC理解和python实践
全称:散列消息鉴别码(Hash Message Authentication Code),HMAC加密算法是一种安全的基于加密hash函数和共享密钥的消息认证协议。实现原理是用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即 MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证等。Python代码:import hmacimport hashlibimport codecs# 第一个参数是密钥key,..原创 2020-08-28 11:22:47 · 356 阅读 · 0 评论 -
module ‘hmac‘ has no attribute ‘new‘
问题原因。是你新建的文件名字和引用的hamc包一致。解决方案:讲文件名字修改一下就ok啦原创 2020-08-28 10:53:18 · 650 阅读 · 1 评论 -
SHA1加密理解与python实现
全称:安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA),SHA1比MD5的安全性更强。对于长度小于2^ 64位的消息,SHA1会产生一个160位的消息摘要。Python代码:import hashlibsha1 = hashlib.sha1()data = 'hello world'sha1.update(data原创 2020-08-28 10:32:57 · 3016 阅读 · 1 评论 -
MD5加密与python实现
全称:MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。md5加密算法是不可逆的,所以解密一般都是通过暴力穷举方法,通过网站的接口实现解密。Python代码如下:import hashlib #引用一个hash库m = hashlib.md5()str="hello world"#这个是需要填入的字符串m.update(str.encode.原创 2020-08-28 10:22:15 · 962 阅读 · 0 评论 -
代理重加密方法
好久没来了,把前段时间写的都贴上来。。。1、研究背景作用:密文云数据动态共享基于用户数据隐私性考虑,用户存放在云端的数据都是加密形式存在的。而云环境中存在着大量数据共享的场景。由于数据拥有者对云服务提供商并不完全信任,不能将解密密文的密钥发送给云端,由云端来解密并分享出去。数据拥有者自己下载密文解密后,再用数据接收方的公钥加密并分享,无疑给数据拥有者带来很大的麻烦,同时也失去了云端数据共享的意义。代理重加密可以在不泄漏数据拥有者解密密钥的情况下,实现云端密文数据共享。功能:借助云平台强大的存转载 2020-07-31 18:34:27 · 3628 阅读 · 2 评论 -
PEKS关键词可搜索加密详解
PEKS算法主要实现了四个步骤。第一步:生成公私钥,初始化安全参数P(数值为质数,这里我认识跟哈希类似,减少冲突)(普通的安全参数一般是指比特的长度,长度越大说明越安全)。具体流程输入P安全参数,对于循环群G来讲(循环的实现是通过模P)。该群的阶数等于 P内的质数个数-P的质因子分解个数+1(1除外)。咱们这里设定阶数为q,如何来求G群的原根?可以用穷举方法,穷举P的质因子组成的所有循环群。可以参考14=2*7这个例子该图中可以看出阶数是6,说明6个数值为一个循环。所以3和5原创 2020-07-29 22:07:36 · 4261 阅读 · 1 评论 -
输入安全系数n 如何构造群。
from Crypto.Util import numberimport random# 群生成算法,输入安全参数n,返回[p, q, g],分别是模p,群的阶q,生成元gdef GroupGen(n): p = number.getStrongPrime(2 * n) q = (p - 1) / 2 q =(int)(q) while True: x = number.getRandomRange(1, p) if number.GC.原创 2020-07-27 13:25:15 · 275 阅读 · 0 评论 -
DLP,CDH和DDH问题解释
The Discrete Logarithm Problem(DLP)让G为一个阿贝尔群(交换群).首先我们把G中的二元操作写成乘法*.对任何g∈G 和任何整数a>1令ga表示g∗g∗g...∗g,其中g出现了a次.离散对数问题就是(DLP);给定G,g和h=ga,寻找a.这里a就叫做h的以g为低的离散对数.一个离散对数问题是难的吗?有时候是,有时候不是.作为反例,令G为加法下的整数.所以现在可以把群运算相加,而不是相乘.因此相同的步骤过后,使用相同的元素g原创 2020-07-26 16:34:07 · 6881 阅读 · 0 评论 -
双线性的定义以及他的性质
G1和G2是q阶循环群,q为一个大素数,G1中的运算为加法,G2中的运算为乘法。 双线性配对: 如果存在满足下列条件的ê: G1×G1→G2 1.双线性: 对所有的P,QG1,a,bZ p ,有ê(aQ, bR) = ê(Q,R)ab; 2.非退化性: 存在Q,RG1使得ê (Q,R) 不等于1; 3.可计算的: 对任意的Q,RG1,存在一个高效的算法来计算ê(Q,R) 称ê为双线性映射。 注意,ê也是对称的, 因为ê是双线性的和G1是一个循环群,所以对于所有的Q,R∈原创 2020-07-26 15:25:14 · 6644 阅读 · 2 评论 -
椭圆加密方法的加密和解密方法
ECC保密通信算法 1.Alice选定一条椭圆曲线E,并取椭圆曲线上一点作为基点G 假设选定E29(4,20),基点G(13,23) , 基点G的阶数n=37 2.Alice选择一个私有密钥p(p<n),并生成公开密钥K=pG 比如25, K= pG = 25G = (14,6) 3.Alice将E和点K、G传给Bob 4.Bob收到信息后,将待传输的明文编码到上的一点M(编码方法略),并产生一个随机整数r(r<n,n为G的阶数) 假设r=6 要加密的信息为3转载 2020-07-26 14:40:23 · 1196 阅读 · 0 评论 -
有限域椭圆曲线如何加密的?
有限域椭圆曲线点的阶如果椭圆曲线上一点P,存在最小的正整数n使得数乘nP=O∞ ,则将n称为P的阶若n不存在,则P是无限阶的计算可得27P=-P=(3,13)所以28P=O ∞ P的阶为28这些点做成了一个循环阿贝尔群,其中生成元为P,阶数为29。显然点的分布与顺序都是杂乱无章椭圆曲线加密考虑K=kG ,其中K、G为椭圆曲线Ep(a,b)上的点,其中a,b是二元三次椭圆方程的参数,n为G的阶(nG=O∞ ),k为小于n的整数。则给定k和G,根据加法法则,计算K很容易但反过来,给原创 2020-07-26 14:05:48 · 808 阅读 · 1 评论 -
有限域椭圆曲线
有限域椭圆曲线椭圆曲线是连续的,并不适合用于加密;所以,我们必须把椭圆曲线变成离散的点,我们要把椭圆曲线定义在有限域上。我们给出一个有限域Fp Fp中有p(p为质数)个元素0,1,2,…, p-2,p-1 Fp的加法是a+b≡c(mod p) Fp的乘法是a×b≡c(mod p) Fp的除法是a÷b≡c(mod p),即 a×b^(-1)≡c (mod p),b-1也是一个0到p-1之间的整数,但满足b×b-1≡1 (mod p) Fp的单位元是1,零元是原创 2020-07-26 09:25:49 · 4306 阅读 · 4 评论 -
椭圆曲线的定义
原创 2020-07-26 09:03:56 · 876 阅读 · 0 评论