密码学
wilson_go
这个作者很懒,什么都没留下…
展开
-
DES加密算法详解
对称加密算法的代表—-DES加密算法原理:该算法是一个利用56+8奇偶校验位(第8,16,24,32,40,48,56,64)=64位的密钥对以64位为单位的块数据进行加解密。DES算法描述 1)、输入64位明文数据,并进行初始置换IP;2)、在初始置换IP后,明文数据再被分为左右两部分,每部分32位,以L0,R0表示;3)、在秘钥的控制下,经过16轮运算(f);4)、16轮...原创 2018-09-01 00:05:42 · 3708 阅读 · 0 评论 -
golang产生RSA的公钥以及私钥
package mainimport ( "crypto/rsa" "crypto/rand" "fmt" "crypto/x509" "encoding/pem" "os")func main() { key, err := rsa.GenerateKey(rand.Reader, 128) if err!=nil { fmt.Println(err) }原创 2018-10-28 09:56:35 · 2197 阅读 · 0 评论 -
hash哈希函数的简要介绍
对于输入的数据,采用哈希算法,能够得到:固定长度的一串数据它具有不可逆推性速度极快输入一样的时候输出一样输入变化的时候输出也变化哈希函数非常适合于区块链...原创 2018-10-28 10:05:32 · 568 阅读 · 0 评论 -
golang中sha256哈希函数
package mainimport ( "crypto/sha256" "fmt" "encoding/hex")func main() { str:="wilson" //使用sha256哈希函数 h := sha256.New() h.Write([]byte(str)) sum := h.Sum(nil) //由于是十六进原创 2018-10-28 10:23:58 · 6197 阅读 · 0 评论 -
代数中群
元素数目(阶数)有限的群称为有限群,否则为无限群。交换群又称Abel群。无非平凡子群的群称为单群。由一个元素生成的群称为循环群。原创 2018-10-29 22:52:45 · 2579 阅读 · 0 评论 -
密码学数字签名
数字签名协议包含以下三个阶段。系统初始化(setup): 给定系统安全参数 ,生成公钥 、私钥 。其中公钥被公开,私钥仅有签名者来秘密保存。生成签名(sign): 用私钥 对消息 生成签名 。验证签名(verify): 用公钥 对签名 进行验证。数字签名目的是认证、核准、有效和负责,防止相互欺骗或抵赖。一个安全有效的数字签名必须满足以下要求:签名不可伪造性: 签名能证明是签字者本人而不是...原创 2018-10-27 15:02:55 · 2517 阅读 · 0 评论 -
中国剩余定理相关介绍
在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?”这个问题称为“孙子问题”,该问题的一般解法国际上称为“中国剩余定理”。具体解法分三步:找出三个数:从3和5的公倍数中找出被7除余1的最小数15,从3和7的公倍数中找出被5除余1 的最小数21,最后从5和7的公倍数中找出除3余1的最小数70。用15乘以...原创 2018-10-27 16:31:32 · 466 阅读 · 0 评论 -
base64加密与解密
package mainimport ( "encoding/base64" "fmt")func main() { str:="wilson" //使用base64加密 s := base64.StdEncoding.EncodeToString([]byte(str)) fmt.Println(s) //使用base64解密 strByte, err := base...原创 2018-10-27 22:08:24 · 468 阅读 · 0 评论 -
你所应该了解的密码相关常识
不要使用保密的密码算法使用低强度的密码比不进行任何加密更危险任何密码总有一天都会被破解密码只是信息安全的一部分不要使用保密的密码算法很多企业都有下面这样的想法:“由公司自己开发一种密码算法,并将这种算法保密,这样就能保证安全。然而,这样的想法却是大错特错,使用保密的密码算法是无法获得高安全性的。我们不应该制作或使用任何保密的密码算法,而是应该使用那些已经公开的、被公认为强度较高的密码算...原创 2018-10-30 20:08:28 · 934 阅读 · 0 评论 -
密码学相关体系
为了防止信息泄露,可以采用对称加密和非对称加密算法对信息本身进行加密。为了防止信息的篡改,保证信息的完整性,使用散列函数、消息认证码以及数字签名。为了防止发送者伪装,可以采用消息认证码和数字签名。对于发送方发送信息,可以采用数字签名技术防止用户否认。...原创 2018-10-30 20:16:17 · 988 阅读 · 0 评论 -
哈希函数的应用
消息认证码使用单向散列函数可以构造消息认证码。消息认证码是将“发送者和接收者之间的共享密钥”和“消息,进行混合后计算出的散列值。使用消息认证码可以检测并防止通信过程中的错误、篡改以及伪装。数字签名在进行数字签名时也会使用单向散列函数。数字签名是现实社会中的签名(sign)和盖章这样的行为在数字世界中的实现。数字签名的处理过程非常耗时,因此一般不会对整个消息内容直接施加数字签名,而是先通过...原创 2018-10-30 21:35:28 · 4868 阅读 · 0 评论 -
golang中椭圆曲线密码
简介椭圆曲线密码学(英语:Elliptic curve cryptography,缩写为 ECC),一种建立公开密钥加密的算法,基于椭圆曲线数学。椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。ECC的主要优势是在某些情况下它比其他的方法使用更小的密钥——比如RSA加密算法——提供相当的或更高等级的安全。椭圆曲线密码学的许多形式有稍...原创 2018-11-01 22:06:42 · 3277 阅读 · 0 评论 -
go双线性对数字签名
设e: GG->G’,为一个非退化的双线性映射,G和G’为素数r阶的乘法群,G的生成元为g,H:{0,1} ->G。根据双线性映射的性质,e(g^x, gy)=e(g,g)(x*y)。要求在G上,CDH problem是困难的。BLS签名的三个函数1、KeyGen:选取[0, r-1]内的一个随机整数x,作为私钥sk;g^x作为公钥pk。由于CDH问题是困难的,我们相信DL问题也是...原创 2018-11-04 19:06:49 · 2570 阅读 · 0 评论 -
椭圆曲线使用bytes进行传输
package mainimport ( "crypto/ecdsa" "crypto/elliptic" "crypto/rand" "fmt" "crypto/sha256" "math/big" "log" "encoding/gob" "bytes")//import (// "fm原创 2018-11-13 14:34:08 · 667 阅读 · 0 评论 -
go语言big.int类型
go语言中内置了big类型的数据,其包含很多常用的方法,比如比较两个大数是否相等,cmp,如果是-1表示前面的数字比较小,0表示相等,1表示前面的数字比较大。newInt可以对数据进行初始化,可以轻松从其他的类型的数据得到big类型的数据。big在椭圆曲线加密中经常会用到。...原创 2018-11-20 22:40:25 · 3516 阅读 · 0 评论 -
PKCS的 15 个标准
PKCS 目前共发布过 15 个标准:(1)PKCS#1:RSA加密标准。PKCS#1定义了RSA公钥函数的基本格式标准,特别是数字签名。它定义了数字签名如何计算,包括待签名数据和签名本身的格式;它也定义了PSA公/私钥的语法。(2)PKCS#2:涉及了RSA的消息摘要加密,这已被并入PKCS#1中。(3)PKCS#3:Diffie-Hellman密钥协议标准。PKCS#3描述了一种实现Di...原创 2018-10-20 00:02:25 · 1904 阅读 · 0 评论 -
base64加密与解密
base64加密与解密import ( "encoding/base64" "fmt")func main() { str:="mygit" s := base64.StdEncoding.EncodeToString([]byte(str)) fmt.Println(s) bytes, _ := base64.StdEncoding.DecodeString(s) fmt....原创 2018-10-17 08:47:32 · 554 阅读 · 0 评论 -
3DES加密算法详解
3DES是三重数据加密,且可以逆推的一种算法方案。但由于3DES的算法是公开的,所以算法本身没有密钥可言,主要依靠唯一密钥来确保数据加解密的安全。到目前为止,仍没有人能破解3DES。3DES密钥的长度必须是8的倍数,可取24位或32位; 加密结果的byte数组转换为字符串,一般采用两种方式:Base64处理或十六进制处理。3DES(Triple DES),是一种对称密钥加密块密码,相当于...原创 2018-09-01 00:09:34 · 4165 阅读 · 0 评论 -
AES加密算法详解
AES为分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节(每个字节8位)。密钥的长度可以使用128位、192位或256位。密钥的长度不同,推荐加密轮数也不同,...原创 2018-09-01 00:15:36 · 597 阅读 · 0 评论 -
SSL与TLS详解
SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。 TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完...原创 2018-09-01 00:18:00 · 660 阅读 · 0 评论 -
密码学体系对分组密码最后分组进行填充和去掉
密码学体系对分组密码最后分组进行填充和去掉,代码如下所示func padding(src []byte,blocksize int) []byte { length := blocksize - len(src)%blocksize padtext := bytes.Repeat([]byte{byte(length)}, length) newText := appe...原创 2018-09-01 23:32:50 · 709 阅读 · 0 评论 -
密码学简要介绍
密码学中的内容十分广泛,分为公钥密码体系和对称密码体系。公钥密码体系中秘钥主要有公钥和私钥,对称密码体系没有公私钥之分。内容可以分为明文和密文。最后算法分为加密算法和解密算法。...原创 2018-09-01 23:36:39 · 478 阅读 · 0 评论 -
des、3des和aes秘钥
密钥是保密系统的核心密钥管理有: 密钥生成:主要是密钥生成器,产生伪随机序列; 密钥的分配和协商:生成后就要分发出去,有集中式和分布式两种,就是有KDC的根据用户要求发密钥,没有的根据主机相互协商生成共同密钥。 密钥的保护和存储:密钥存储要保证密钥的机密性完整性真实性。 密钥的更换和装入:不能超期使用密钥,一旦泄露就要更换和撤销,装入可以主机主密钥装入或终端主密钥装入。在密钥...原创 2018-09-01 23:44:55 · 1449 阅读 · 0 评论 -
散列函数
散列函数是一类将任意长度的输入位(或字节)串转换为固定长度的输出的含糊。散列函数的一个典型应用是数字签名。给定一个消息m,当然可以对这个消息本身进行签名。然而,大多数数字签名方案所采用的公钥运算的运算代价很大,直接对消息本身签名非常不经济。因此不会直接对m进行签名,而是应用散列函数h,对h(m)进行签名。相对于成千上万位长度的消息而言,散列函数的输出一般128位到1024位之间。对h(m)的签名比...原创 2018-09-05 22:36:31 · 5419 阅读 · 0 评论 -
实际的散列函数
好的散列函数并不多,目前主要从SHA系列中选择:SHA-1、SHA-224、SHA-256和SHA-512。当然,还有一些其他的已经公布的方案,包括提交作为新的SHA-3标准的候选方法。但是这些已经公布的方案由于缺乏足够的关注和研究,目前仍然无法得到大多数使用者的信任。实际上,对SHA系列的分析也不够充分,但是由于它被NIST进行了标准化,NSA对它做了进一步的完善。MD5、SHA-1/SHA-2...原创 2018-09-05 22:45:22 · 385 阅读 · 0 评论 -
消息认证码(message authentication code)MAC
消息认证码,或者MAC,用于检测对消息的串改。加密使Eve不能够获取消息的内容,但不能防止Eve对消息进行操作,这是就需要消息认证码。与加密消息一样,MAC也使用一个秘钥K,Alice和Bob知道秘钥但Eve不知道。当Alice向Bob发送消息m时,不仅仅发送消息m,而且还发送一个由MAC函数计算得到的MAC值。Bob检验即接受到消息的MAC值与收到的MAC值是否相等,如果不匹配则丢失这个没能通过...原创 2018-09-05 23:13:40 · 13437 阅读 · 3 评论 -
密码学中数学困难问题
1.大整数因数分解问题 Ⅰ)给定两个素数p,q,计算乘积p·q=n很容易; Ⅱ)给定大整数n,求n的素因素p,q使得n=p·q非常困难. 例1 p=20000000000000002559,q=80000000000000001239是两个安全素数,它们的乘积 n=p·q=160000000000000229500000000000003170601. 但要分解这个n非常困难.2...原创 2018-09-16 00:34:16 · 5435 阅读 · 0 评论 -
椭圆曲线加密算法详解
椭圆曲线加密算法,即:Elliptic Curve Cryptography,简称ECC,是基于椭圆曲线数学理论实现的一种非对称加密算法。相比RSA,ECC优势是可以使用更短的密钥,来实现与RSA相当或更高的安全。据研究,160位ECC加密安全性相当于1024位RSA加密,210位ECC加密安全性相当于2048位RSA加密。 椭圆曲线在密码学中的使用,是1985年由Neal Koblitz和V...转载 2018-10-17 21:40:23 · 5234 阅读 · 3 评论 -
golang中RSA加密与解密算法
package mainimport ("crypto/rand""crypto/rsa""crypto/x509""encoding/base64""encoding/pem&原创 2018-10-10 16:40:48 · 967 阅读 · 0 评论 -
go语言中椭圆曲线
椭圆曲线原创 2018-10-10 17:06:14 · 1061 阅读 · 0 评论 -
golang中md5加密算法
MD5是一种广泛使用的加密算法。package mainimport ( "crypto/md5" "fmt" "encoding/hex")func main() { h := md5.New() h.Write([]byte("hello ...,yanxu&q原创 2018-10-17 08:42:29 · 965 阅读 · 0 评论 -
go语言中的判断文件的方法
go语言中内只有os.stat方法,该方法可以得到文件的属性,使用os.IsNotExits()将os.stat的返回值传进去后,可以得到是否存在。该方法能够得到文件是否存在,最好是在utils将其封装为自由方法。...原创 2018-11-20 22:43:41 · 726 阅读 · 0 评论