2025-02-19 18:30:19 +08:00
|
|
|
|
package tool
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
@Author : Uyynot
|
|
|
|
|
@Email : uyynot@qq.com
|
|
|
|
|
@Time : 2023/11/20 10:07
|
|
|
|
|
@File : test.go
|
|
|
|
|
@Project : test
|
|
|
|
|
@Desc :
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"crypto/rand"
|
|
|
|
|
"crypto/rsa"
|
|
|
|
|
"crypto/sha1"
|
|
|
|
|
"crypto/x509"
|
|
|
|
|
"encoding/base64"
|
|
|
|
|
"encoding/json"
|
|
|
|
|
"encoding/pem"
|
|
|
|
|
"errors"
|
|
|
|
|
"log"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// 读取私钥文件,解析出私钥对象
|
|
|
|
|
func ReadParsePrivaterKey(filename string) (*rsa.PrivateKey, error) {
|
|
|
|
|
// 1、读取私钥文件,获取私钥字节
|
|
|
|
|
// privateKeyBytes, err := os.ReadFile(filename)
|
|
|
|
|
privateKeyBytes := []byte(filename)
|
|
|
|
|
// if err != nil {
|
|
|
|
|
// return nil, err
|
|
|
|
|
// }
|
|
|
|
|
// 2、对私钥文件进行编码,生成加密块对象
|
|
|
|
|
block, _ := pem.Decode([]byte(privateKeyBytes))
|
|
|
|
|
if block == nil {
|
|
|
|
|
return nil, errors.New("私钥信息错误!")
|
|
|
|
|
}
|
|
|
|
|
// 3、解析DER编码的私钥,生成私钥对象
|
|
|
|
|
privateKey, err := x509.ParsePKCS1PrivateKey(block.Bytes)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
return privateKey, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func Keyprin(b64CipherTest string) Auth_s {
|
|
|
|
|
pri_key, err := ReadParsePrivaterKey("-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA7+q7OnKKXHyX81/mkfIhSpeRMXdVh/m5ZUlCEKMRO0BQKr/D\n9M60oYyPoqMiKY85iXp2ImGzudKuxcDOAIQRB1esP1LB58XcS9G3iFU6nFTN6hC2\nj8Izy+XDkGyPx1BDuQUj/TQGsDGittDuvRPle6GSUL24eNbCp/mp29aON38+Di4R\n8fAlTbajHRRf+stBXmJLLd7mvWkB8DEi8eV7dPQ4MzTM9bUNdClD0jiQnlUCfODj\nS+Nu2UOk/+DYgJfYPARPEvHP/Rv1tkuBYZ1J0Pfre2Sq52LdHVCMw5bbeR3z1i/l\nsD4cs9B6LZtPHZIo8ntC0PrgT3PjRaF4LHFc5QIDAQABAoIBAAz2fNlCmRE4NimT\nM+0MzRmvqMuoa/ml14uOcsBdXy/5YJt+swLGLGJSKuyZrd3a/DveXwWqi8Btjr3m\nlfrXJ+hip07glNOGEEoUcbsvB7SsrFeKQaLw1kWdC30BMJ+PSal0iqZCql3YwLbq\nAQw8R/jvGO294nq899WFmtTi+dorrhG99raYcAHNfBnokTs9U2hOmwCwxGcDnQUJ\nTO00RcX/kYMarWbrTS72zE+UwRuokdbw8pBVgDOM3c72qmQwOj+Pwo2S7n4Do55p\nyhPf1ysUJZeScJqITkyjMa0tGfERkKvpNM3HBbcwX+gG+ZAG5yFf/Of99CIXBeH7\nlHvIGL0CgYEA99tU7KIX7z3tZZxIxrYQsudhrCqkO09h+yVbwCoacnOtGpS9rxK2\nw88JP8sNhztneiMgzoncHhsaAwVEopD7Rb+78Ei8yud4/AmzoxIDM56bkGnalItt\ng3OLPR+u/dyrhIhh7ymchytgbX76nmYLwjzejWRK9kRnYMrUL3mR5ZsCgYEA98ye\njZgzsb4g3rHV/8xQ0CLZV5AUDpA46IaQIQbkoSscySDyILxDnLGiM20+y8Krx5KX\nIAQHteGVLuVkqWc3eIvl5Rd02jeIr6Or2+CPrEn6kCdxWXOtkpBudgCtcSenA0Jj\n/2tjX7q/yPvrsNyBw0zrRimbTQNfy+6WKSbLL38CgYEAiAN4qxKYh9U3/VayKTmo\nGEUZOF1+Gn4JisSJgP6Z3MzV5YxSO0zNts5aiQNovRlAQ6obSrwkavD8aUPu0jc1\nbKU3ATkpQT+dCNJaHda4ow8a1zj/lhydUFGLy1MjuHPsO6KL+66eEx8en3fbGClv\nsnustXKgIFyRTnB/2D2ibpkCgYEA9pfXyMyH1P+BsluCvHXUjevAIdUtQHjhSPRw\nBY3Yg1Jl6PkyOsVe+1YCNe8nKJpnW8lTPvcDvUnprat2Cua+WuXNN7ep/2Z4TWEx\nKzRDhY5xHHdD42KsfkfgxOlTsGFnYGT3Ijz5vVAYfqfEGlK1h2bKUx4gf/k1obmi\nEP2cAX0CgYEA094N2loQbE7DHcc88ACqUB5yl93X1LhrzyiHWanJm8yGk1c17fN/\n/yE/PiGvB+kNPFV95JhbBRjVl3bRHV4a94dbgSeuaSrfDEp08l4mSqTnp08I6Z/7\naNLqThTjLOvcEjq1MahY+dzmK46GtE2L2NiYm+CKNbEyqE55pq6mWrk=\n-----END RSA PRIVATE KEY-----")
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Println("err:", err)
|
|
|
|
|
}
|
|
|
|
|
//解码base64
|
|
|
|
|
decodeBytes, err := base64.StdEncoding.DecodeString(b64CipherTest)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Println(err)
|
|
|
|
|
}
|
|
|
|
|
// log.Println([]byte(decodeBytes))
|
|
|
|
|
|
|
|
|
|
// 使用私钥解密密文
|
|
|
|
|
decryptedPlainText, err := rsa.DecryptOAEP(sha1.New(), rand.Reader, pri_key, decodeBytes, nil)
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic(err)
|
|
|
|
|
}
|
|
|
|
|
var auth Auth_s
|
|
|
|
|
if err != json.Unmarshal(decryptedPlainText, &auth) {
|
|
|
|
|
log.Println(err)
|
|
|
|
|
}
|
|
|
|
|
// log.Printf("Decrypted plain text: %v\n", auth.Initial_time)
|
|
|
|
|
// log.Println(auth.Initial_time)
|
|
|
|
|
// log.Println(auth.End_time)
|
|
|
|
|
// log.Println(auth.Surplus_time)
|
|
|
|
|
return auth
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type Auth_s struct {
|
|
|
|
|
SerialNumber string `json:"serialNumber"` //主板编号
|
|
|
|
|
Username string `json:"username"` //用户名
|
|
|
|
|
Initial_time string `json:"initial_time"` //初始时间
|
|
|
|
|
End_time string `json:"end_time"` //结束时间
|
|
|
|
|
Surplus_time string `json:"surplus_time"` //授权总时长/天
|
2025-03-17 00:15:13 +08:00
|
|
|
|
Status string `json:"status"` //状态
|
2025-02-19 18:30:19 +08:00
|
|
|
|
}
|
2025-03-11 16:04:26 +08:00
|
|
|
|
|
|
|
|
|
// 解密
|
|
|
|
|
func KeyStr(b64CipherTest string) string {
|
|
|
|
|
pri_key, err := ReadParsePrivaterKey("-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA7+q7OnKKXHyX81/mkfIhSpeRMXdVh/m5ZUlCEKMRO0BQKr/D\n9M60oYyPoqMiKY85iXp2ImGzudKuxcDOAIQRB1esP1LB58XcS9G3iFU6nFTN6hC2\nj8Izy+XDkGyPx1BDuQUj/TQGsDGittDuvRPle6GSUL24eNbCp/mp29aON38+Di4R\n8fAlTbajHRRf+stBXmJLLd7mvWkB8DEi8eV7dPQ4MzTM9bUNdClD0jiQnlUCfODj\nS+Nu2UOk/+DYgJfYPARPEvHP/Rv1tkuBYZ1J0Pfre2Sq52LdHVCMw5bbeR3z1i/l\nsD4cs9B6LZtPHZIo8ntC0PrgT3PjRaF4LHFc5QIDAQABAoIBAAz2fNlCmRE4NimT\nM+0MzRmvqMuoa/ml14uOcsBdXy/5YJt+swLGLGJSKuyZrd3a/DveXwWqi8Btjr3m\nlfrXJ+hip07glNOGEEoUcbsvB7SsrFeKQaLw1kWdC30BMJ+PSal0iqZCql3YwLbq\nAQw8R/jvGO294nq899WFmtTi+dorrhG99raYcAHNfBnokTs9U2hOmwCwxGcDnQUJ\nTO00RcX/kYMarWbrTS72zE+UwRuokdbw8pBVgDOM3c72qmQwOj+Pwo2S7n4Do55p\nyhPf1ysUJZeScJqITkyjMa0tGfERkKvpNM3HBbcwX+gG+ZAG5yFf/Of99CIXBeH7\nlHvIGL0CgYEA99tU7KIX7z3tZZxIxrYQsudhrCqkO09h+yVbwCoacnOtGpS9rxK2\nw88JP8sNhztneiMgzoncHhsaAwVEopD7Rb+78Ei8yud4/AmzoxIDM56bkGnalItt\ng3OLPR+u/dyrhIhh7ymchytgbX76nmYLwjzejWRK9kRnYMrUL3mR5ZsCgYEA98ye\njZgzsb4g3rHV/8xQ0CLZV5AUDpA46IaQIQbkoSscySDyILxDnLGiM20+y8Krx5KX\nIAQHteGVLuVkqWc3eIvl5Rd02jeIr6Or2+CPrEn6kCdxWXOtkpBudgCtcSenA0Jj\n/2tjX7q/yPvrsNyBw0zrRimbTQNfy+6WKSbLL38CgYEAiAN4qxKYh9U3/VayKTmo\nGEUZOF1+Gn4JisSJgP6Z3MzV5YxSO0zNts5aiQNovRlAQ6obSrwkavD8aUPu0jc1\nbKU3ATkpQT+dCNJaHda4ow8a1zj/lhydUFGLy1MjuHPsO6KL+66eEx8en3fbGClv\nsnustXKgIFyRTnB/2D2ibpkCgYEA9pfXyMyH1P+BsluCvHXUjevAIdUtQHjhSPRw\nBY3Yg1Jl6PkyOsVe+1YCNe8nKJpnW8lTPvcDvUnprat2Cua+WuXNN7ep/2Z4TWEx\nKzRDhY5xHHdD42KsfkfgxOlTsGFnYGT3Ijz5vVAYfqfEGlK1h2bKUx4gf/k1obmi\nEP2cAX0CgYEA094N2loQbE7DHcc88ACqUB5yl93X1LhrzyiHWanJm8yGk1c17fN/\n/yE/PiGvB+kNPFV95JhbBRjVl3bRHV4a94dbgSeuaSrfDEp08l4mSqTnp08I6Z/7\naNLqThTjLOvcEjq1MahY+dzmK46GtE2L2NiYm+CKNbEyqE55pq6mWrk=\n-----END RSA PRIVATE KEY-----")
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Println("err:", err)
|
|
|
|
|
}
|
|
|
|
|
//解码base64
|
|
|
|
|
decodeBytes, err := base64.StdEncoding.DecodeString(b64CipherTest)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Println(err)
|
|
|
|
|
}
|
|
|
|
|
// log.Println([]byte(decodeBytes))
|
|
|
|
|
|
|
|
|
|
// 使用私钥解密密文
|
|
|
|
|
decryptedPlainText, err := rsa.DecryptOAEP(sha1.New(), rand.Reader, pri_key, decodeBytes, nil)
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic(err)
|
|
|
|
|
}
|
|
|
|
|
return string(decryptedPlainText)
|
|
|
|
|
}
|