椭圆曲线加密__http://blog.51cto.com/11821908/2057726
// MyRas.go
package main import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/pem"
"fmt"
"os"
) func main() {
//加密
src := []byte("少壮不努力,活该你单身,223333")
fmt.Println("非对称加密解密数据", src)
date, err := EnRsaPublic("PublicKey.pem", src)
if err != nil {
panic(err)
}
date, err = DeRsaPrivate(date, "PriveteKey.pem")
if err != nil {
panic(err)
}
fmt.Println("非对称加密解密结果", string(date))
} /*
生成私钥操作流程
1.使用rsa中GenerateKey方法生成私钥
2.通过x509标准将得到的rsa私钥序列化为ASN.1的DER编码字符串
3.将私钥字符串设置到pem格式块中
4.通过pem将设置好的数据进行编码,并写入磁盘文件中
生成公钥操作流程
1.从得到的私钥对象中将公钥信息取出
2.通过x509标准将得到的rsa公钥序列化为ASN.1的DER编码字符串
3.将公钥字符串设置到pem格式块中
4.通过pem将设置好的数据进行编码,并写入磁盘文件中
*/ func GeneRsa(blockSize int) error {
PrivateKey, err := rsa.GenerateKey(rand.Reader, blockSize)
if err != nil {
return err
}
stream := x509.MarshalPKCS1PrivateKey(PrivateKey)
block := pem.Block{
Type: "RSA PrivateKey",
Bytes: stream,
}
PrivateFile, err := os.Create("PriveteKey.pem")
if err != nil {
return err
}
err = pem.Encode(PrivateFile, &block) PublicKey := PrivateKey.PublicKey stream1, err := x509.MarshalPKIXPublicKey(&PublicKey)
if err != nil {
return err
} block1 := pem.Block{
Type: "RSA PublicKey",
Bytes: stream1,
}
PublicFile, err := os.Create("PublicKey.pem")
if err != nil {
return err
}
err = pem.Encode(PublicFile, &block1)
return err
} /*
公钥加密
1.将公钥取出得到PEM编码的字符串
2.将得到的字符串进行pem解码
3.使用x509进行解析公钥
4.使用Rsa对公钥进行加密
私钥解密
1.将私钥取出得到PEM编码的字符串
2.将得到的字符串进行pem解码
3.使用x509进行解析私钥
4.对私钥使用rsa进行解密
*/
func EnRsaPublic(filePath string, src []byte) ([]byte, error) {
file, err := os.Open(filePath)
msg := []byte(" ")
if err != nil {
return msg, err
}
//(file *File) Stat() (FileInfo, error)
info, err := file.Stat()
//type FileInfo interface
if err != nil {
return msg, err
}
byteSize := make([]byte, info.Size())
//(f *File) Read(b []byte) (n int, err error) Read方法从f中读取最多len(b)字节数据并写入b
file.Read(byteSize)
//Decode(data []byte) (p *Block, rest []byte)
block, _ := pem.Decode(byteSize)
//type Block struct
//ParsePKIXPublicKey(derBytes []byte) (pub interface{}, err)
pubinter, err := x509.ParsePKIXPublicKey(block.Bytes)
if err != nil {
return msg, err
}
pubKey := pubinter.(*rsa.PublicKey)
//EncryptPKCS1v15(rand io.Reader, pub *PublicKey, msg []byte)
msg, err = rsa.EncryptPKCS1v15(rand.Reader, pubKey, src)
if err != nil {
return msg, err
}
return msg, nil } func DeRsaPrivate(src []byte, filePath string) ([]byte, error) {
file, err := os.Open(filePath)
msg := []byte(" ")
if err != nil {
return msg, err
}
//(file *File) Stat() (FileInfo, error)
info, err := file.Stat()
//type FileInfo interface
if err != nil {
return msg, err
}
byteSize := make([]byte, info.Size())
//(f *File) Read(b []byte) (n int, err error) //Read方法从f中读取最多len(b)字节数据并写入b
file.Read(byteSize) block, _ := pem.Decode(byteSize) priKey, err := x509.ParsePKCS1PrivateKey(block.Bytes)
if err != nil {
return msg, err
}
msg, err = rsa.DecryptPKCS1v15(rand.Reader, priKey, src)
if err != nil {
return msg, err
}
return msg, nil }
/*
非对称加密解密数据 少壮不努力,活该你单身,223333
非对称加密解密结果 少壮不努力,活该你单身,223333
*/

go加密算法:非对称加密(一)--RSA的更多相关文章

  1. 加密算法(对称加密)AES、DES (非对称加密)RSA、DSA

    目前主流的加密方式有:(对称加密)AES.DES        (非对称加密)RSA.DSA

  2. 非对称加密技术- RSA算法数学原理分析

    非对称加密技术,在现在网络中,有非常广泛应用.加密技术更是数字货币的基础. 所谓非对称,就是指该算法需要一对密钥,使用其中一个(公钥)加密,则需要用另一个(私钥)才能解密. 但是对于其原理大部分同学应 ...

  3. openssl 非对称加密DSA,RSA区别与使用介绍(转)

    openssl 非对称加密DSA,RSA区别与使用介绍(转) 博客分类: OS.Linux Security   在日常系统管理工作中,需要作一些加解密的工作,通过openssl工具包就能完成我们很多 ...

  4. 浅谈IM软件业务知识——非对称加密,RSA算法,数字签名,公钥,私钥

    概述 首先了解一下相关概念:RSA算法:1977年由Ron Rivest.Adi Shamirh和LenAdleman发明的.RSA就是取自他们三个人的名字. 算法基于一个数论:将两个大素数相乘很ea ...

  5. 使用java实现对称加密解密(AES),非对称加密解密(RSA)

    对称加密:双方采用同样的秘钥进行加密和解密.特点是速度快,但是安全性没有非对称加密高 非对称加密:接收方生成的公有秘钥公布给发送方,发送方使用该公有秘钥加密之后,发送给接收方,然后接收方使用私有秘钥解 ...

  6. openssl 非对称加密DSA,RSA区别与使用介绍

    在日常系统管理工作中,需要作一些加解密的工作,通过openssl工具包就能完成我们很多需求! 1. openssl RSA 加解密 RSA是基于数论中大素数的乘积难分解理论上的非对称加密法,使用公私钥 ...

  7. go加密算法:非对称加密(三)--Elliptic

    看了2星期的区块链原理与运行机制,加密这里开始变得有些生疏,花了一天时间复习了一些;看到了之前忽略的,也学会了椭圆曲线加密. //基础板:浅显易懂package main import ( " ...

  8. go加密算法:非对称加密(二)--Hash

    关于一些加密算法的应用和信息,可以在以下博客中查找到: https://www.cnblogs.com/charlesblc/p/6130141.html // MyHash package main ...

  9. Asp.Net 常用工具类之加密——非对称加密RSA算法

    踏入程序员这个行业也有几年了,几年中有收获(技术加强),有付出(时间和亚健康状态).当然喏,并不后悔,代码路还长!!! On The Way,永不止步!!! 开发过程中也积累了一些自己的经验.代码块和 ...

随机推荐

  1. C/C++读写excel文件 的几种方式

    因为有些朋友问代码的问题,将OLE读写的代码分享在这个地方,大家请自己看. http://blog.csdn.net/fullsail/article/details/8449448 C++读取Exc ...

  2. 什么是shell? bash和shell有什么关系?

    什么是Shell?      shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序.你在提示符下输入的每个命令都由shell先解释然后传给Linux内核.      ...

  3. 故障排除:无法启动、访问或连接到 Azure 虚拟机上运行的应用程序

    有多种原因可导致无法启用或连接到在 Azure 虚拟机 (VM) 上运行的应用程序.原因包括应用程序未在预期端口上运行或侦听.侦听端口受到阻止,或网络规则未将流量正确传递到应用程序.本文说明有条理地找 ...

  4. mongodb 3.4 TAR包启动多个实例

    1:解压压缩文件 tar .tgz mkdir /home/maxiangqian/ mv mongodb /home/maxiangqian/ 2:加入环境变量 export PATH/bin:$P ...

  5. Linux:301重定向 —— 将不带www的重定向到带www的

    仓鼠又要手把手教啦 1.先看看自己有没有解析域名(带www和不带www的是两种域名形式!!) 位置:阿里云->域名->解析 2.进入解析,带www的说明你已经解析了www.ljjpm.co ...

  6. SAP C/4HANA与人工智能和增强现实(AR)技术结合的又一个创新案例

    今天这篇迟到的文章,来自我的同事Aviva. 去年SAP C/4HANA发布之后,SAP的从业者们可能或多或少都读过一些来自SAP官方渠道,比如微信公众号"SAP天天事"发布的一些 ...

  7. mongodb分片集群(无副本集)搭建

    数据分片节点#192.168.114.26#mongo.cnfport=2001dbpath=/data/mongodb/datalogpath=/data/mongodb/log/mongodb.l ...

  8. 异常:Neither BindingResult nor plain target object for bean name 'command' available as request attribute

    Neither BindingResult nor plain target object for bean name 'command' available as request attribute ...

  9. 我上线的android版app

    把自己开发的几个小的app上线了,在自己的博客中推广一下吧: 聊天兔子: 下载地址:http://android.myapp.com/myapp/detail.htm?apkName=com.fuly ...

  10. 再谈Spring Boot中的乱码和编码问题

    编码算不上一个大问题,即使你什么都不管,也有很大的可能你不会遇到任何问题,因为大部分框架都有默认的编码配置,有很多是UTF-8,那么遇到中文乱码的机会很低,所以很多人也忽视了. Spring系列产品大 ...