密码学
文章平均质量分 66
The_Reader
奔跑的蜗牛
展开
-
Go语言实现DES加密算法(一)—— DES算法概念、DES的CBC模式、Go语言实例实现
DES算法 DES内部实现理论: 在des中的各个步骤称之为轮,整个加密过程需要进行16轮循环。 子密钥:中间的子密钥指的是本轮加密使用的密钥,每一轮都需要使用一个不同的子密钥,由于它只在一轮中使用,只是一个局部密钥,所以称之为子密钥。轮函数:根据右侧和子密钥生成对左侧进行加密的比特序列,它是密码体系的核心。右半侧实际上没有进行任何处理,者在加密算法中看起来比较浪费...原创 2018-09-06 21:34:53 · 1550 阅读 · 0 评论 -
Go语言实现base64编码
package mainimport ( "encoding/base64" "fmt")func main() { var msg =[]byte("i am the reader!") encoding := base64.StdEncoding.EncodeToString(msg) fmt.Println(encoding) bytes, e := base64.S...原创 2018-10-08 20:01:19 · 1606 阅读 · 0 评论 -
SHA256与ripemd160两种算法应用
package mainimport ( "crypto/sha256" "fmt" "encoding/hex" "golang.org/x/crypto/ripemd160")func main() { hashed := sha256.New() hashed.Write([]byte("i am wek")) hash := hashed.Sum(nil)...原创 2018-10-08 19:41:14 · 2344 阅读 · 0 评论 -
Go语言实现单向散列函数 —— MD5消息摘要算法、SHA256与224(Go语言实现)
MD5消息摘要算法MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。Go语言实现方式一:package mainimport ( "fmt" "crypto/md5" "encoding/hex")func ...原创 2018-11-23 16:33:38 · 1098 阅读 · 0 评论 -
国密GMSM2 —— go语言实现国密SM2加密算法
package mainimport ( "github.com/tjfoc/gmsm/sm2" "fmt" "encoding/hex")func main() { //生成私钥 privateKey, e := sm2.GenerateKey() if e!=nil{ fmt.Println("sm2 encrypt faild!") } //从私...原创 2018-11-12 21:05:14 · 9346 阅读 · 19 评论 -
Go语言与RSA算法 —— RSA案例实现
package mainimport ( "crypto/rsa" "crypto/rand" "crypto/x509" "encoding/pem" "os" "fmt" "encoding/hex")//生成私钥和公钥//bits:私钥的长度func RsaGenKey(bits int) error { //生成公钥和私钥 //原创 2018-11-12 20:07:45 · 298 阅读 · 0 评论 -
Go语言与AES加密算法 —— 简介、AES算法案例
AES简介高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成...原创 2018-11-12 19:50:50 · 791 阅读 · 0 评论 -
GMSM —— 国密简介、概念(SM1-9)、ZUC祖冲之算法
国密算法介绍国密算法是国家商用密码管理办公室指定的一系列的密码标准,即已经被国家密码局认定的国产密码算法,又称商用密码(是指能够实现商用密码算法的加密,解密和认证等功能的技术),保障在金融,医疗等领域的信息传输安全。国密算法可分为对称算法和非对称算法,对称算法包括了SM1,SM4,SM7,祖冲之密码(zuc),非对称算法包括SM2,SM9。还有SM3是哈希算法,SM1和SM7对外是不公开的...原创 2018-11-12 15:20:35 · 18292 阅读 · 1 评论 -
单向散列 —— 简介、SHA256加密算法、RIPEMD160加密算法
单向散列单向散列算法,又称hash函数(杂凑函数,或者杂凑算法),就是把任意输入消息字符串变成固定长的输出串的一种函数,这个输出串称为该消息的杂凑值,一般使用产生消息摘要,密钥加密等。具体指的是根据输入消息计算后,输出固定长度数值的算法,输出数值也成为“散列值”或消息摘要,其长度通常在128~256位之间。输入的长度可以是任意的 输出长度是固定的,根据目前的计算技术应至少取128bit长...原创 2018-11-12 10:23:48 · 7357 阅读 · 1 评论 -
国密SM —— SM3单向散列、SM3案例实现、SM4分组密码标准、Go语言实现SM4加密
func main() { hash := sm3.New() hash.Write([]byte("i am wek $$ The_Reader !")) result := hash.Sum(nil) println("sm3 hash = ",hex.EncodeToString(result)) hash2 := sm3.Sm3Sum([]byte("i am wek ...原创 2018-11-15 19:12:50 · 3683 阅读 · 1 评论 -
密码学(一)—— 背景、常用的密码算法简介,单向散列简介、数字签名简介
背景密码,最初的目的就是用于对信息的加密,计算机领域的密码技术种类繁多,但随着密码学的运用,密码还用于身份认证,防止否认等功能上。最基本的,是信息加密解密分为对称加密和非对称加密,这两者的区别在于是否在加密解密时是否使用了相同的密钥。除了信息的加密解密,还有用于确认数据完整性的单向散列技术,又称魏密码检验、指纹、消息摘要。信息的加密解密与信息的单向散列的区别时,加密解密是可以通过密钥来获取其加...原创 2018-11-09 18:14:50 · 3087 阅读 · 0 评论 -
GO语言与RSA算法 —— RSA算法概念、原理、Go语言实现实例
RSA算法加密RSA是一种公钥密码算法,其加密可以通过公式来表示: 密文=明文^E mod N RSA的加密是求明文的E次方mod N,因此只需要知道E和N,任何人都可以完成加密运算,E和N就是RSA算法的公钥。 2.解密解密同样也可以使用一个公式来表示: 明文=密文^D mod N D和N就充当了RSA算法的私钥 公钥密码存在的问题公钥密码虽然解决了密钥配送的...原创 2018-09-07 21:54:10 · 757 阅读 · 0 评论 -
Go语言与3重DES加密算法 —— 3DES加密算法概念、实现原理、实例
3DES三重DES是为了增强DES的强度,将DES重复3次所得到的一种密码算法3DES加密机制: 说明:明文经过三次DES处理才变成最后的密文,由于DES密钥的长度实质上是56比特,因此三重DES的密钥长度就是56*3=168比特。 三重DES并不是进行三次加密(加密->加密->加密),而是加密->解密->加密的过程,这种设计是为了让3des...原创 2018-09-07 21:33:35 · 1407 阅读 · 0 评论 -
Go语言实现DES加密算法(二)—— DES的ECB模式、CFB模式、OFB模式原理简介
ECB模式ECB模式的全称是:Electronic CodeBook,也称之为电子密码本模式,将明文分组加密之后的结果称之为密文分组加密: 解密: ECB模式是所有模式中最简单的一种,明文分组和密文分组是一一对应的关系,明文分组中存在多个相同的明文分组,则这些明文分组最终被转换为相同的密文分组,只要观察一下密文,就可以知道明文中存在怎样的一个组合,ECB模式存在一定风...原创 2018-09-06 22:10:39 · 1244 阅读 · 0 评论 -
SM2国密之Go语言实现数字签名与验证
package mainimport ( "github.com/tjfoc/gmsm/sm2" "fmt" "crypto/sha256")func handleErr(e error,why string){ if e!=nil{ fmt.Println(why,e) }}func main() { privateKey, e := sm2.Generate...原创 2018-12-04 14:46:21 · 3221 阅读 · 0 评论