![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
密码学
刘三羊
老白程序猿,互相交流(本人擅长go语言,所以博客许多代码都会使用go语言实现)
展开
-
链表-环形链表
package mainimport ( "fmt" "time")type Woker struct { Age int Name string}type Node struct { NextNode *Node PreNode *Node Data *Woker}//创建头结点f原创 2018-05-16 22:58:54 · 212 阅读 · 0 评论 -
md5加密算法原理及其GO语言实现
md5加密算法原理及其GO语言实现MD5讯息摘要演算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码杂凑函数,可以产生出一个128位元(16位元组)的散列值(hash value),用于确保信息传输完整一致。go 调用 md5 方法新建 md5.go 文件,代码如下:package mainimport( "fmt" ...转载 2018-05-21 23:15:52 · 858 阅读 · 0 评论 -
分组密码的调用
分组密码的调用CBCpackage mainimport ( "bytes" "crypto/cipher" "crypto/aes" "encoding/base64" "fmt")func PKCS7Padding(ciphertext []byte, blockSize int) []byte { padding := b...原创 2018-05-21 23:14:14 · 188 阅读 · 0 评论 -
分组密码
分组密码密码算法可以分为分组密码和流密码两种分组密码(block cipher)是每次只能处理特定长度的一块数据的一类密码算法,这里的“一块”就称为分组(block)。一个分组的比特数就称为分组长度(block lenght)。例如 DES和3DES的分组长度都是64比特。AES的分组长度为128比特。流密码(stream cipher)是对数据流进行连续处理的一类密码算法。流密码...转载 2018-05-21 23:13:06 · 7754 阅读 · 0 评论 -
实现数字签名
实现数字签名数字签名算法(DSA)数字签名算法(DSA,Digital Signature Algorithm),是一种公开密钥算法,不能用于加密,只能用于数字签名。主要用作为接收者验证数字的完整性和数据发送者的身份,DSA算法的安全性基于解离散对数的困难性。package mainimport ( "crypto/dsa" "crypto/rand" ...原创 2018-05-21 23:11:02 · 2701 阅读 · 0 评论 -
数字签名
数字签名什么是数字签名数字签名就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。签名的生成和验证生成消息签名的行为生成消息签名这一行为是由消息的发送者来完成的,也称为“对消息签名”。生成签名就是根据消息内容计算数字签名的值,这个行为意味着“我认可该消息的内容”。验证消息签名的行为验证数字签名...转载 2018-05-21 23:09:58 · 439 阅读 · 0 评论 -
GO语言实现RSA 加密和解密的实现
RSA 加密和解密的实现openssl生成私钥openssl genrsa -out rsa_private_key.pem 1024 openssl生成公钥openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 实现 RSA 加密解密package main im...转载 2018-05-21 23:07:25 · 6388 阅读 · 0 评论 -
密码学-CFB
CFB算法密码算法可以分为分组密码和流密码两种,之前所学的DES,3DES和AES都是分组密码。CFB和OFB都是刘密码,而CFB和OFB使用方法也基本相同,所以只以CFB进行讲解: package main//通过CFB模式进行AES加密import ( "crypto/aes" "io" "crypto/rand" "crypto原创 2018-05-17 20:36:40 · 2651 阅读 · 0 评论 -
密码学-AES
AES算法在AES算法中的秘钥可以是16位,24位或者32位,在加密和解密的过程中要使用同一个秘钥。package mainimport ( "bytes" "crypto/aes" "crypto/cipher" "fmt")func main() { key16 := []byte("1234567890123456") e...原创 2018-05-17 20:27:57 · 860 阅读 · 0 评论 -
密码学-3DES
3DES加密算法3DES加密算法的使用与DES的用法基本相同,使用方法如下: package main import ( "bytes" "crypto/des" "crypto/cipher" "fmt" "encoding/base64&原创 2018-05-17 20:16:02 · 204 阅读 · 0 评论 -
密码学-DES
#DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法对称加密算法DES的使用package main//DES,3DES,AES//用同一个秘钥加密和解密import ( "bytes" "crypto/cipher&a原创 2018-05-16 20:23:26 · 517 阅读 · 0 评论 -
密码学-hash加密
以下代码分别为乘法hash,sha256,md5,ripemd160的使用方法:package mainimport ( "fmt" "crypto/sha256" "os" "io" "crypto/md5&qu原创 2018-05-16 20:20:31 · 909 阅读 · 0 评论 -
密码学-hash散列表
hash散列表哈希表(也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 下面我们来写一个简单的hash散列表,首先对上一节中的代码我们做一些改进,在这里我们声明一个结构体类型,作为几点数据的类型,然后对代码的参数进行一些修改。pac...原创 2018-05-16 20:30:57 · 274 阅读 · 0 评论 -
密码学-链表
数据结构链表下面我们来写一个单向的简单链表,首先我们要声明一个头节点是为了保存头节点信息,同理声明一个当前节点保存当前节点的信息,再然后声明一个节点类型的结构体,里面有两个变量,一个是节点的存储数据,数据类型为字符串,另一个是下一个节点的地址数据类型节点的指针类型。(package LinkNodes的内容写在LinkNodes文件夹下的node.go文件中) package Lin...原创 2018-05-16 20:34:31 · 213 阅读 · 0 评论 -
密码学
现代密码学一、 hash散列原理1、 数据结构链表 2、 Hash 散列算法二、 SHA256Hash加密概念:将任意长度的铭文加密成固定长度的密文 MD4 MD5 SHA256三、 对称加密概念:用同一个密钥进行加密和解密 AES DES四、 非对称加密概念:同时产生公钥和私钥,公钥可以公开,私钥自己保存好 1、RSA【非对称加密...原创 2018-05-16 20:41:11 · 144 阅读 · 0 评论 -
sha256 加密算法
sha256 加密算法go 调用 sha256 加密字符串哈希值package mainimport( "fmt" "crypto/sha256" "io" "log" "os")func main() { // 第一种调用方法 sum := sha256.Sum256([]byte("hello world\.转载 2018-05-21 23:16:30 · 14527 阅读 · 0 评论