IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Golang RAS 验签 -> 正文阅读

[网络协议]Golang RAS 验签

通过加载pem公钥证书对签名进行验签

package main

import (
	"crypto"
	"crypto/rsa"
	"crypto/sha1"
	"crypto/x509"
	"encoding/base64"
	"encoding/hex"
	"encoding/pem"
	"fmt"
	"strings"
)

/*
	验签
*/

func verfiy() {

	cer := `-----BEGIN CERTIFICATE-----
MIIENDCCAxygAwIBAgIFE0RwNCMwDQYJKoZIhvcNAQEFBQAwITELMAkGA1UEBhMC
Q04xEjAQBgNVBAoTCUNGQ0EgT0NBMTAeFw0yMTA5MDgwNTUxMDlaFw0yNjA5MDgw
NTUxMDlaMIGfMQswCQYDVQQGEwJjbjESMBAGA1UEChMJQ0ZDQSBPQ0ExMRYwFAYD
VQQLEw1DaGluYUNsZWFyaW5nMRQwEgYDVQQLEwtFbnRlcnByaXNlczFOMEwGA1UE
AwxFMDQxQDg5MTUwMDAwMDM0NTg4OTQxNTlA6ams5LiK5raI6LS56YeR6J6N6IKh
5Lu95pyJ6ZmQ5YWs5Y+4QDAwMDAwMDAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEA4Q2h2gCWO0yR1tVHsZJ/iPdgNZ7TlLF559kkrerXv7sYL+iHjy9y
RncFxPXE/hhp7Fnid6PkM4I+kWGANObzykTLuVkLYUZjhU1IKmG1CgO60oPd7Fe9
wzoNDe2/YtRonBtBdLZSXoIq0Hi3ZWnq7Y3Vy5V8S8zfBlq6/p8uYXOIqqjelMV4
OsUAqwWkMFW9V8hKoiR2o70pdAohZkmNPesUNaDGZjiEEDhDiDg00ONePfU1UQ3i
ljZBT7CEE1MyRIi3g1Sbf2Yc2V1JSGxA2bfbn/iS81an58M1Kr3IyH7jazNfsGaY
oS6dFVsLHOVePymwQo4MJeb6QGYYM64eZQIDAQABo4HzMIHwMB8GA1UdIwQYMBaA
FNHb6YiC5d0aj0yqAIy+fPKrG/bZMEgGA1UdIARBMD8wPQYIYIEchu8qAQEwMTAv
BggrBgEFBQcCARYjaHR0cDovL3d3dy5jZmNhLmNvbS5jbi91cy91cy0xNC5odG0w
OAYDVR0fBDEwLzAtoCugKYYnaHR0cDovL2NybC5jZmNhLmNvbS5jbi9SU0EvY3Js
Mjg0NzYuY3JsMAsGA1UdDwQEAwID6DAdBgNVHQ4EFgQUVN7VDIx7YSMQfBt6j8T8
BQUAA4IBAQAlF9NYVrCW9syA4GY4zy8doDyjBe12SdHsUpL4U5FftJkD2Gj+66Kf
V/7sqLlKqNqvkyaQScJ45hKCYjBvPjNhtkxzxgNDPJKk4kW4KiU8OFewB5ab/YmR
0Mmk+hV5eFWHxRdCiGGRIvKHr9mtC/l5U2K5LvwuKypqnVPv28qf4EVVFu2l2bPW
tTvtxIQrPOxnG6IyqrfJZA4EM/+67NTX3+FTSNthyviK0ovcHq39tNErqIZ7ph2q
ss9c2JF/MX/qoUDDDjdKy+0DFX/inPw6wlyp0WNDgipA4bSjh9C/B4Y/vJ5lsnvH
6UoTiUeglvQH3vmyLpDlAF9U4AMise2b
-----END CERTIFICATE-----`
   //message 是有原文进行Base64结果 
	message := "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxSZXF1ZXN0IHZlcnNpb249IjIuMSI+CiAgICA8SGVhZD4KICAgICAgICA8VHhjDwvQnJhbmNoTmFtZT4KICAgICAgICA8Tm90aWNlVVJMPmh0dHA6Ly9zcGF5Z3cubXN4Zi5jb20vb3V0dGVyL2NwY25feXFmL3NpZ25Bc3lOb3RpZnkvMDA3MjE1PC9Ob3RpY2VVUkw+CiAgICA8L0JvZHk+CjwvUmVxdWVzdD4="
	// signature 是对原文进行的签名结果再进行hex
	signature := "cafa78c2ecb8bca795330647fbd3eb198eb6c452700eee781474a989ab85668ca2e5c3167a6eda6cd66070c887b71c2681e7c1db5e25064be56a17361df23b3d53f6b666fc37d5a2ff3b581197630fdda2a431fcd9faff8a1156b6de455cf360fefdbf519a19b960ceb22f0d28e088df67cee2dc0d04e413b73bde55ac96944120c36a66ffa1b9fafb331db457418b5e67b8aa2d4c57fadc0f4a1674fc6ff8fac6933f750e591aed68332014fdb497bec1fd8ff9b35f15f8e9548"
	// 解析pem,构建证书
	cerDecode, _ := pem.Decode([]byte(cer))
	x509Cer, _ := x509.ParseCertificate(cerDecode.Bytes)

	publicKey := x509Cer.PublicKey.(*rsa.PublicKey)

	sign, _ := hex.DecodeString(signature)
	m, _ := base64.StdEncoding.DecodeString(message)
	fmt.Println(string(m))
	hash := sha1.New()
	hash.Write(m)
	err := rsa.VerifyPKCS1v15(publicKey, crypto.SHA1, hash.Sum(nil), sign)
	// 验证通过则err=nil,否则err则为:crypro/rsa: verification error
	fmt.Println(err)
}

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 19:10:26  更:2021-09-11 19:12:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:45:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码