椭圆曲线加密__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. 鲁棒图(Robustness Diagram)

    鲁棒图与系统需求分析 鲁棒图(Robustness Diagram)是由Ivar Jacobson于1991年发明的,用以回答“每个用例需要哪些对象”的问题.后来的UML并没有将鲁棒图列入UML标准, ...

  2. 沉淀,再出发——在Hadoop集群之上安装hbase

    在Hadoop集群之上安装hbase 一.安装准备 首先我们确保在ubuntu16.04上安装了以下的产品,java1.8及其以上,ssh,hadoop集群,其次,我们需要从hbase的官网上下载并安 ...

  3. nodejs+postgis实现搜周边

    利用nodejs搭建服务器,并连接PostgreSQL数据库,利用前端传过来的中心点坐标和搜索半径,进行空间查询,实现简单的搜周边,下面是实现流程和nodejs的代码: app.post('/tose ...

  4. 使用JQuery做一组复选框的功能。

    之前做过复选框的功能,奈何笔记丢失,害的我又鼓捣了一番...还是博客园做笔记比较好. 假设现在有一个表格,每一行都有一个复选框按钮.在表头还有一个全选的复选框按钮. ①.当点击一个全选按钮时,下面的同 ...

  5. 八.安装Nginx

    http://blog.csdn.net/grhlove123/article/details/47834673

  6. 谁把我的表给drop了?

    今天生产上有人把几张表给DROP了,一通折腾.恢复备份导数回来数据,重建索引. 但是,我就想知道是谁给干掉了. 到你被删除表数据库中找日志吧.其它的也想不到更好办法了 USE '被删表数据库' --查 ...

  7. wampserver的安装与配置

    一.安装:wamp的安装很简单,只需要按照提示并根据自己的需求操作即可,这里不再赘述. 二.配置:wamp安装完后,需进行如下配置才能正常工作. 1.修改MySQL的登录密码 (1)启动WampSer ...

  8. 简单使用idea Spring Boot搭建项目

    第一步:使用Spring Initializr创建 第二步:项目配置 第三步:选择项目需要的依赖 第五步: ok 创建完成,修改仓库 maven{ url 'http://maven.aliyun.c ...

  9. 截屏快捷键(windows)自带截屏,不需要安装任何插件

    方案一:电脑自带截屏,不需要QQ Shift+win+s即可截图(推荐使用) 方案二:搜狗输入法下载自带:Ctrl+Shift+x

  10. 两种方式(xml+代码)构建SqlSessionFactory+完整实现

    首先创建类.接口.数据库: entity包下Admin类: package com.wbg.springJavaConfig.entity; public class Admin { private ...