密码学
Yuan_sr
这个作者很懒,什么都没留下…
展开
-
Python RSA加解密应用
【代码】Python RSA加解密应用。原创 2023-03-14 17:51:05 · 121 阅读 · 0 评论 -
C++ RSA 加解密应用
【代码】C++ RSA 加解密应用。原创 2023-03-14 17:49:17 · 294 阅读 · 0 评论 -
密码技术应用--SM2文件签名验签
记录一下对一些稍大文件进行SM2签名验签的实现,这里只列出了核心代码,其他不涉及的代码或者有任何疑问可以查看我之前写的密码技术专题博客/*函数名: sm2Sign sm2 签名算法实现对文件的签名参 数: filePathIn , 待签名文件 priKey , 签名私钥文件返回值: 签名后文件名 错误信息创建时间及创建者: 2021-06-17 Yuan_sr*/func sm2Sign (filePathIn, priKey string) (string, er原创 2021-06-20 23:30:42 · 3953 阅读 · 1 评论 -
密码技术应用--RSA文件签名验签
记录一下对一些稍大文件进行RSA签名验签的实现,这里只列出了核心代码,其他不涉及的代码或者有任何疑问可以查看我之前写的密码技术专题博客/*函数名: rsaSign rsa 签名算法实现对文件的签名参 数: filePathIn , 待签名文件 priKey , 签名私钥文件返回值: 签名后文件名 错误信息创建时间及创建者: 2021-06-15 Yuan_sr*/func rsaSign (filePathIn, priKey string) (string, er原创 2021-06-20 23:29:00 · 472 阅读 · 0 评论 -
密码技术应用--SM4文件加解密
记录一下对一些稍大文件进行SM4加解密的实现,这里只列出了核心代码,其他不涉及的代码或者有任何疑问可以查看我之前写的密码技术专题博客var key = []byte("1234567812345678")var iv = []byte("1111111122222222")/*函数名: paddingLastGroup 对 CBC 加密模式的加密算法提供最后一个分块的明文数据填充参 数: plainText , 明文数据 blockSize , CBC 分块大小返回值: 填充后原创 2021-06-20 23:27:07 · 2847 阅读 · 0 评论 -
密码技术应用--AES文件加解密
记录一下对一些稍大文件进行AES加解密的实现,这里只列出了核心代码,其他不涉及的代码或者有任何疑问可以查看我之前写的密码技术专题博客var key = []byte("1234567812345678")var iv = []byte("1111111122222222")/*函数名: paddingLastGroup 对 CBC 加密模式的加密算法提供最后一个分块的明文数据填充参 数: plainText , 明文数据 blockSize , CBC 分块大小返回值: 填充后原创 2021-06-20 23:25:02 · 640 阅读 · 0 评论 -
密码技术--分组密码的加密模式
分组密码的加密模式1. 按位异或第一步需要将数据转换为二进制2. ECB - Electronic Code Book,电子密码本模式ECB模式是简单的加密模式,明文数据被分成固定大小的块,并且每个块被单独加密,每个块的加密和解密都是独立的,且使用相同的方法进行加密,所以可以进行并行计算,这种模式下有一个块被破解了,用相同的方法就可以破解其他块得到明文数据。安全性比较差,适用于数据较少的情形,加密前需要把明文数据填充到块大小的整数倍go接口中不提供该模式3.04总结:特点:简单,效率高,原创 2021-05-23 23:06:41 · 790 阅读 · 0 评论 -
密码技术--非对称加密算法及Go语言应用
非对称加密算法1.对称加密的弊端秘钥分发困难可以通过非对称加密完成秘钥的分发Alice和Bob通信,Alice给Bob发送数据,使用对称加密的流程1.Bob生成一个非对称的密钥对,2.Bob将公钥发送给Alice3.Alice生成一个用于对称加密的秘钥4.Alice使用Bob的公钥就对对称加密的秘钥进行加密,并发送给Bob5.Bob使用私钥对数据解密,得到对称加密的私钥通信的双方使用写好的秘钥进行对称加密对数据加密场景分析1.通信流程,信息加密(A写数据给B,信原创 2021-05-23 23:13:09 · 241 阅读 · 0 评论 -
密码技术--单向散列函数即go语言应用
1.什么是单向散列函数单向散列函数(one-wayftnction)有一个输入和一个输出,其中输入称为消息,输出称为散列值(hashvalue),单向散列函数可以根据消息的内容计算出散列值,而散列值就可以被用来检测消息的完整性术语:消息摘要函数、哈希函数、杂凑函数输入单向散列函数的消息称为原像(pre-image)单向散列函数的输出的散列值称为消息摘要(message digest)也称为指纹(fingerprint)完整性也称为一致性性质:根据任意长度的输入输出为定长能够快速计算出原创 2021-05-25 00:00:21 · 264 阅读 · 0 评论 -
密码技术--消息认证码及go语言应用
1.什么是消息认证码消息认证码(message authorization code)是一种确认完整性并进行认证的技术,取了三个单词的首字母,简称为MAC发送者:((原始数据) + 秘钥) * 哈希函数 = 散列值(消息认证码)发送原始数据和消息认证码接收者:接收消息认证码和原始数据(接收原始数据 + 秘钥) * 哈希函数 = 新的散列值 =? 接收到的散列值(消息认证码)秘钥必须一样,使用的哈希函数必须一致2.go中使用消息认证码package mainimport原创 2021-05-25 00:01:50 · 194 阅读 · 0 评论 -
密码技术--RSA数字签名及Go语言应用
数字签名的流程1.打开磁盘的私钥文件2.将私钥文件中的内容读出3.使用pem对数据解码,得到pem.Block结构体变量4.x509将数据解析成私钥结构体得到私钥5.创建一个哈希对象6.给哈希对象添加数据7.计算哈希值8.使用rsa中的函数对散列值签名数字认证的流程1.打开磁盘的公钥文件2.使用pem解码得到pem.Block结构体变量3.使用x509对pem.Block中的变量进行解析得到一个公钥接口4.进行类型断言得到公钥结构体5.对原始消息进行哈希运算(和签名算法使用原创 2021-05-25 00:03:55 · 186 阅读 · 3 评论 -
密码技术--对称加密算法及Go语言应用
对称加密算法DESData Encryption Standard (数据加密标准)是1977年美国联邦信息处理标准(FIPS)中所采用的一种对称密码。DES一直以来被美国以及其他国家的政府和银行等广泛应用,然而,随着计算机的进步,现在DES已经能够本暴力破解,强度大不如以前了。RSA公司举办过破译DES密钥的比赛(DESChallenge),比赛的结果为:1977年比赛中用了96天破解1998年第一次比赛用了41天破解1998年第二次比赛用了56小时1999年第三次比赛中只用了22小时15原创 2021-05-23 22:51:58 · 316 阅读 · 0 评论 -
密码技术--国密证书及go语言生成自签国密证书
go语言生成自签证书文件(SM2)package mainimport ( "crypto/rand" "crypto/x509/pkix" "encoding/pem" "github.com/tjfoc/gmsm/sm2" "github.com/tjfoc/gmsm/x509" "math/big" "net" "os" "time")func GenerateCertKeySM2(host, commonName string, alternateIPs []net.I原创 2021-05-28 23:15:02 · 1321 阅读 · 0 评论 -
密码技术--证书及go语言生成自签证书
证书类似身份证,里面记录了某人的姓名、年龄、地址等个人信息,还包括这个人的公钥(身份证号码),并由认证机构(类似派出所)进行数字签名后发放,只要我们看到该证书就可以知道认证机构认定了该公钥(身份证号码)的确属于此人,解决了数字签名中无法确认是谁的公钥的问题,该证书也叫公钥证书,简称证书。go语言生成自签证书文件(RSA)package mainimport ( "crypto/rand" "crypto/rsa" "crypto/x509" "crypto/x509/pkix" "enco原创 2021-05-28 00:25:25 · 1072 阅读 · 0 评论 -
密码技术--国密SM2椭圆曲线公钥密码算法及Go语言应用
SM2椭圆曲线公钥密码算法SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,SM2是国家密码局与2010年12月17日发布的椭圆曲线公钥密码算法,在我们国家商用密码体系中被用来替换RSA算法。SM2加解密package mainimport ( "crypto/rand" "github.com/tjfoc/gmsm/sm2" "github.com/tjfoc/gmsm/x509" "os")func GerenateSM2Key(){ //1.生成sm2原创 2021-05-27 00:46:30 · 1294 阅读 · 0 评论 -
密码技术--国密SM4分组密码算法及Go语言应用
SM4对称加密算法SM4是我国采用的一种分组密码标准,有国家密码局与2012年3月21日发布,秘钥长度和分组长度为128位。go语言中应用简单版本:其函数接口中已实现分组密码底层接口的调用func sm4Sample(){ src := []byte("这是对称加密SM4的CBC模式加解密测试") key := []byte("1q2w3e4r5t6y7u8i") cipherText, err := sm4.Sm4Cbc(key, src, true) if err != nil {原创 2021-05-27 00:33:39 · 2578 阅读 · 2 评论 -
密码技术--国密SM3哈希算法及Go语言应用
SM3杂凑算法sm3是我国国产的哈希算法,是一种密码散列函数标准,有国家密码管理局与2010年12月17日发布,该算法主要用于数字签名及验证,消息认证码生成及验证,随机数生成等,算法公开,其效率与sha256相当。go语言应用package mainimport ( "fmt" "github.com/tjfoc/gmsm/sm3")func main(){ src := []byte("sm3是我国国产的哈希算法") hash := sm3.New() hash.Write(sr原创 2021-05-27 00:22:49 · 2224 阅读 · 3 评论 -
密码技术--椭圆曲线算法EDCSA数字签名及Go语言应用
1.生成秘钥对并写入磁盘文件1.使用ecdsa生成秘钥对2.将私钥写入磁盘使用x509进行反序列化将得到的切片字符串放到pem.Block结构体中使用pem编码3.将公钥写入磁盘从私钥中得到公钥使用x509进行序列化将得到的切片字符串放入pem.Block结构体中使用pem编码2.使用私钥进行数字签名1.打开私钥文件,将内容读出来2.使用pem进行数据解码3.使用x509对数据还原4.对原始数据进行哈希运算5.进行数字签名func Sign(rand io.R原创 2021-05-25 23:52:26 · 681 阅读 · 0 评论