golang Rsa

package models                                                                                                                                                               

import (
    "crypto/rand"
    "crypto/rsa"
    "crypto/x509"
    "encoding/pem"
    "errors"
)

func RsaDecrypt(ciphertext []byte, pri_key []byte) ([]byte, error) {

    block, _ := pem.Decode(pri_key)
    if block == nil {
        return nil, errors.New("invalid rsa private key")
    }   

    priv, err := x509.ParsePKCS1PrivateKey(block.Bytes)
    if err != nil {
        return nil, err
    }   

    return rsa.DecryptPKCS1v15(rand.Reader, priv, ciphertext)
}

func RsaEncrypt(plaintext []byte, pub_key []byte) ([]byte, error) {

    block, _ := pem.Decode(pub_key)
    if block == nil {
        return nil, errors.New("invalid rsa public key")
    }   

    pubInf, err := x509.ParsePKIXPublicKey(block.Bytes)
    if err != nil {
        return nil, err
    }
    pub := pubInf.(*rsa.PublicKey)
    return rsa.EncryptPKCS1v15(rand.Reader, pub, plaintext)
}

  

时间: 2024-11-16 00:36:53

golang Rsa的相关文章

[Golang]Go Packages

----------------------------------------------------------------------------------------------------------- 程序包标准类库 其他程序包     子库     社区标准类库 名称     摘要 存档            tar     tar包实现了对档案的压缩.      zip     zip程序包对读写ZIP文档提供支持. bufio     bufio包实现了输入/输出缓冲.它包含

Golang、Php、Python、Java基于Thrift0.9.1实现跨语言调用

目录: 一.什么是Thrift? 1) Thrift内部框架一瞥 2) 支持的数据传输格式.数据传输方式和服务模型 3) Thrift IDL 二.Thrift的官方网站在哪里? 三.在哪里下载?需要哪些组件的支持? 四.如何安装? 五.Golang.Java.Python.PHP之间通过Thrift实现跨语言调用 1) Golang 客户端和服务端的实现及交互 2) python 客户端的实现与golang 服务端的交互 3) php 客户端的实现与golang 服务端的交互 4) java

https原理通俗理解及golang实现

http: 是一个客户端与服务端请求及应答的一个基于tcp传输的标准协议 浏览器通过http协议向一个服务器发送请求,服务器接收到请求之后经过一系列的处理将将请求结果内容返回给浏览器,此时浏览器网页上便获得我们所需要的内容 但是基于http协议浏览器与服务器传输数据的过程中,数据是明文的,在21世纪网络发达的今天,明文数据极易被截获修改,对安全性造成了很大的隐患 因安全要求有必要对传输数据进行加密,因而https协议便由此诞生 https: https协议是基于http协议基础上的一种安全(基于

(转)使用Thrift0.9.1实现跨语言调用Golang、Php、Python、Java

问题导读:什么是Thrift?Thrift的官方网站在哪里?Golang.Java.Python.PHP之间如何通过Thrift实现跨语言调用? 一.什么是Thrift Thrift是一种可伸缩的跨语言服务的发展软件框架.它结合了功能强大的软件堆栈的代码生成引擎,以建设服务. Thrift是facebook开发的,07年4月开放源代码,08年5月进入apache孵化器.创造Thrift是为了解决facebook系统中各系统间大数据量的传 输通信以及系统之间语言环境不同需要跨平台的特性.所以thr

Golang(十一)TLS 相关知识(二)OpenSSL 生成证书

0. 前言 接前一篇文章,上篇文章我们介绍了数字签名.数字证书等基本概念和原理 本篇我们尝试自己生成证书 参考文献:TLS完全指南(二):OpenSSL操作指南 1. OpenSSL 简介 OpenSSL 是一个开源项目,其组成主要包括三个组件: openssl:多用途的命令行工具 libcrypto:加密算法库 libssl:加密模块应用库,实现了ssl及tls OpenSSL 主要用于秘钥证书管理.对称加密和非对称加密 1.1 指令 常用指令包括:genrsa.req.x509 1.1.1

golang 后台 苹果一键登录 sing in with apple

本文主要展示golang后台编写苹果一键登录的代码.苹果一键登录的流程需自行去查看相关文档 这是解析 identity_token的方法来验证    如果是用code的话验证 请去 https://blog.csdn.net/tptpppp/article/details/99288426 也是得到苹果的token然后解析出来验证前端传入的user package main import ( "crypto/rsa" "fmt" "github.com/a

python实现网页登录时的rsa加密流程

对某些网站的登录包进行抓包时发现,客户端对用户名进行了加密,然后传给服务器进行校验. 使用chrome调试功能断点调试,发现网站用javascript对用户名做了rsa加密. 为了实现网站的自动登录,需要模拟这个加密过程. 网上搜了下关于rsa加密的最简明的解释: rsa加密是非对称加密算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥.公钥是可发布的供任何人使用,私钥则为自己

RSA加密算法

1 import java.io.File; 2 import java.io.FileInputStream; 3 import java.io.FileOutputStream; 4 import java.io.ObjectInputStream; 5 import java.io.ObjectOutputStream; 6 import java.math.BigInteger; 7 import java.security.InvalidParameterException; 8 im

MD5加密和RSA加密

1.MD5加密  MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),MD5算法的使用不需要支付任何版权费用. MD5的功能:     ①.输入任意长度的信息,经过处理,输出为128位的信息(数字指纹):    ②.不同的输入得到的不同的结果(唯一性):    ③.根据128位的输出结果不可能反推出输入的信息(不可逆),也就是只能加密,不能解密:  MD5的用途:     1.防止被篡改:    1)比如发送一个电子文档,发送前,我先得到MD5的