优化授权检测
34
auth/util.go
@ -2,16 +2,17 @@ package auth
|
||||
|
||||
import (
|
||||
"dt_automate/dbpool"
|
||||
"dt_automate/tool"
|
||||
"fmt"
|
||||
"log"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
machine_code "github.com/super-l/machine-code"
|
||||
)
|
||||
|
||||
func Auth_main() map[string]string {
|
||||
func auth_main() map[string]string {
|
||||
var auth_s dbpool.Douy_info
|
||||
|
||||
fmt.Println("电脑序列号:", machine_code.Machine.BoardSerialNumber)
|
||||
if machine_code.Machine.BoardSerialNumber != "" {
|
||||
//查询sql 获取用户信息
|
||||
rows, err := dbpool.QueryRows("SELECT * FROM `douy`.`douy_info` WHERE serialNumber = ?;", machine_code.Machine.BoardSerialNumber)
|
||||
@ -51,3 +52,30 @@ func Auth_main() map[string]string {
|
||||
// log.Println(string(b))
|
||||
return aa
|
||||
}
|
||||
|
||||
// 授权状态
|
||||
func Auth() bool {
|
||||
key := tool.Keyprin(auth_main()["key"])
|
||||
if key.Status == "2" {
|
||||
a, _ := strconv.ParseInt(key.End_time, 10, 64)
|
||||
// b, _ := strconv.ParseInt(key.Initial_time, 10, 64) // 获取的不是当前时间
|
||||
duration := time.Unix(a, 0).Sub(time.Unix(tool.Timestamp("second"), 0))
|
||||
days := int(duration / (24 * time.Hour)) //天
|
||||
hours := int(duration % (24 * time.Hour) / time.Hour) //小时
|
||||
minutes := int(duration / time.Minute % 60) //分钟
|
||||
secod := int(duration / time.Second % 60) //秒
|
||||
if days <= 0 && hours <= 0 && minutes <= 0 {
|
||||
fmt.Println("电脑序列号:", machine_code.Machine.BoardSerialNumber)
|
||||
log.Printf("授权已到期,剩余时间:%d天 %d小时 %d分钟 %d秒", days, hours, minutes, secod)
|
||||
return false
|
||||
} else {
|
||||
fmt.Println("电脑序列号:", machine_code.Machine.BoardSerialNumber)
|
||||
log.Printf("授权未到期,剩余时间:%d天 %d小时 %d分钟 %d秒", days, hours, minutes, secod)
|
||||
return true
|
||||
}
|
||||
} else {
|
||||
fmt.Println("电脑序列号:", machine_code.Machine.BoardSerialNumber)
|
||||
log.Println("没有授权,请联系管理员")
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
cookie: vindex==46=12=0AB00=0R;supportLang=cn%2Cen;lang=cn;sessionid=200001add7a90ab1b776de85f3fabe8fdd3b;loginid=17a906828a15530283ad99a57d7c86d6;200001add7a90ab1b776de85f3fabe8fdd3b=true;abcd1234=true;login=false;
|
||||
cookie: vindex==46=14=0AB00=0R;supportLang=cn%2Cen;lang=cn;sessionid=2000016ad6e6ddeb6173e9f602c697bb417f;loginid=44b72d88e78e25b5e44f27ad636b5936;2000016ad6e6ddeb6173e9f602c697bb417f=true;abcd1234=true;login=false;
|
||||
dtcloud_cookie: Hm_lvt_d980fb2543f406139975c7a72a5a0387=1740971050,1740974075,1741246647; ea6ee7ef65afa3fa0312817d0b12190e=787b65e4f93b05a0765ee0e7a6e2d24c; CECLOUD_OPS_SID=Tm1Sa01tUTRaakF0WW1FeE1DMDBNelUwTFdJMFl6QXROR1ppWWpWallqVXdNMlZsfGRYTmxjaTVvYkhjdVpIUmpiRzkxWkM1amIyMD0=; CECLOUD_OPS_CID=TmpObVpEbG1ORGd0WmpjNU1DMDBObUZtTFdKbVptWXRZVEJpWkRNd1pERTFOakk1fGRYTmxjaTVvYkhjdVpIUmpiRzkxWkM1amIyMD0=
|
||||
mysql:
|
||||
password: sLy1ZxZBEroGcoSv75P/xigUJ59/Yhsz1Z7896WzArcImdobrwg5+N6QEo4yT6CcpW22Y6bYy6a0ZWYAEzDaKZhOQG0odaUAv/SDP7JM7l7hH987XFJkUauaETu97Ev0kObsbS4laEiEg/+VG8fQrPuD2iRax1IWGXTKOtn+gHlyzSp016OhKOUUKKdW16OaC8AbVX9F3tVp10c2hsQNvLJl27MN5m3jXpoq9CTdcXsk15oHZVuIp3Kj9RWa8azpauiCPEKVE1KPvuJAhPYYakZBAdxGNU7Ye/YPZq68PJZHm6otEsaQxGJB1+DRNYh0oFWN9+aSYph6kAn0p5/c4g==
|
||||
|
Before Width: | Height: | Size: 188 KiB After Width: | Height: | Size: 182 KiB |
Before Width: | Height: | Size: 251 KiB After Width: | Height: | Size: 247 KiB |
BIN
img/capt.png
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 6.5 KiB |
BIN
img/hw_baolj.png
Before Width: | Height: | Size: 198 KiB After Width: | Height: | Size: 197 KiB |
BIN
img/hw_fw1.png
Before Width: | Height: | Size: 384 KiB After Width: | Height: | Size: 381 KiB |
BIN
img/hw_tsgz.png
Before Width: | Height: | Size: 234 KiB After Width: | Height: | Size: 213 KiB |
Before Width: | Height: | Size: 194 KiB After Width: | Height: | Size: 194 KiB |
BIN
img/zww_fw1.png
Before Width: | Height: | Size: 183 KiB After Width: | Height: | Size: 183 KiB |
BIN
img/zww_tsgz.png
Before Width: | Height: | Size: 161 KiB After Width: | Height: | Size: 150 KiB |
109
main.go
@ -4,14 +4,11 @@ import (
|
||||
_ "dt_automate/attackevent"
|
||||
"dt_automate/auth"
|
||||
_ "dt_automate/method"
|
||||
"dt_automate/tool"
|
||||
_ "dt_automate/wps"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -34,79 +31,51 @@ func main() {
|
||||
// log.Println(os.Args[1])
|
||||
if len(os.Args) > 1 {
|
||||
if keyss {
|
||||
key := tool.Keyprin(auth.Auth_main()["key"])
|
||||
if key.Status == "2" {
|
||||
a, _ := strconv.ParseInt(key.End_time, 10, 64)
|
||||
// b, _ := strconv.ParseInt(key.Initial_time, 10, 64) // 获取的不是当前时间
|
||||
duration := time.Unix(a, 0).Sub(time.Unix(tool.Timestamp("second"), 0))
|
||||
days := int(duration / (24 * time.Hour)) //天
|
||||
hours := int(duration % (24 * time.Hour) / time.Hour) //小时
|
||||
minutes := int(duration / time.Minute % 60) //分钟
|
||||
secod := int(duration / time.Second % 60) //秒
|
||||
if days <= 0 && hours <= 0 && minutes <= 0 {
|
||||
log.Printf("授权已到期,剩余时间:%d天 %d小时 %d分钟 %d秒", days, hours, minutes, secod)
|
||||
} else {
|
||||
log.Printf("授权未到期,剩余时间:%d天 %d小时 %d分钟 %d秒", days, hours, minutes, secod)
|
||||
|
||||
}
|
||||
// log.Printf("剩余时间:%d天 %d小时 %d分钟 %d秒", days, hours, minutes, secod) //剩余时间
|
||||
if auth.Auth() {
|
||||
// log.Println("授权状态:", true)
|
||||
} else {
|
||||
log.Println("没有授权,请联系管理员")
|
||||
}
|
||||
}
|
||||
if runs {
|
||||
key := tool.Keyprin(auth.Auth_main()["key"])
|
||||
if key.Status == "2" {
|
||||
a, _ := strconv.ParseInt(key.End_time, 10, 64)
|
||||
// b, _ := strconv.ParseInt(key.Initial_time, 10, 64) // 获取的不是当前时间
|
||||
duration := time.Unix(a, 0).Sub(time.Unix(tool.Timestamp("second"), 0))
|
||||
days := int(duration / (24 * time.Hour)) //天
|
||||
hours := int(duration % (24 * time.Hour) / time.Hour) //小时
|
||||
minutes := int(duration / time.Minute % 60) //分钟
|
||||
secod := int(duration / time.Second % 60) //秒
|
||||
if days <= 0 && hours <= 0 && minutes <= 0 {
|
||||
log.Printf("授权已到期,剩余时间:%d天 %d小时 %d分钟 %d秒", days, hours, minutes, secod)
|
||||
} else {
|
||||
log.Printf("授权未到期,剩余时间:%d天 %d小时 %d分钟 %d秒", days, hours, minutes, secod)
|
||||
//可执行程序位置
|
||||
// 互联网区截图
|
||||
// method.HW_FAC1() //截取流量清洗的图片
|
||||
// method.HW_FW1() //截取防火墙的图片
|
||||
// method.HW_TSGZ() //截取态势感知的图片
|
||||
// method.HW_DTCLOUD() //截取运维中心的图片
|
||||
// method.HW_BAOLJ() //截取堡垒机的图片
|
||||
if auth.Auth() {
|
||||
//可执行程序位置
|
||||
// 互联网区截图
|
||||
// method.HW_FAC1() //截取流量清洗的图片
|
||||
// method.HW_FW1() //截取防火墙的图片
|
||||
// method.HW_TSGZ() //截取态势感知的图片
|
||||
// method.HW_BAOLJ() //截取堡垒机的图片
|
||||
// method.HW_DTCLOUD() //截取运维中心的图片
|
||||
// // 政务网区截图
|
||||
// method.ZWW_FW1() //截取防火墙的图片
|
||||
// method.ZWW_TSGZ() //截取态势感知的图片
|
||||
// method.ZWWW_BAOLJ() //截取堡垒机的图片
|
||||
// method.ZWW_DTCLOUD() //截取运维中心的图片
|
||||
// 互联网区运维巡检文档生成
|
||||
// wps.HW_SYS_Word() //运维平台word文档生成
|
||||
// // 政务网区运维巡检文档生成
|
||||
// wps.ZWW_SYS_Word() //运维平台word文档生成
|
||||
// // 安全巡检文档生成
|
||||
// wps.SAFET_Word() //安全巡检文档生成
|
||||
//互联网防火墙ips事件获取 安全事件表格生成
|
||||
// attackevent.Fw_event(attackevent.HW_fw1_cookie(), "2025-03-18") //将防火墙安全事件存放到xlsx文件中
|
||||
// //政务网防火墙ips事件获取 安全事件表格生成
|
||||
// attackevent.Zww_event(attackevent.HW_zww1_cookie(), "2025-03-18") //将防火墙安全事件存放到xlsx文件中
|
||||
//nessus的csv文件生成docx报告
|
||||
// nessus.CSV_damo()
|
||||
//翻译模块调用腾讯xt翻译月500万字限制
|
||||
// log.Println(wps.Translate("hello"))
|
||||
// wps.Weekly_word()
|
||||
//调用云平台接口
|
||||
// dtcloud.EcsList() //获取ecs列表及其详情(完成)
|
||||
// dtcloud.Process() //获取单ecs进程使用情况
|
||||
// dtcloud.Memory() //获取单个ecs的memory使用情况
|
||||
// dtcloud.Cpu() ///获取单个ecs的cpu使用情况
|
||||
// dtcloud.TenantList() //获取租户列表(完成)
|
||||
//获取docx文档中所有的图片
|
||||
// wps.Weekly_get_img("")
|
||||
// wps.DrawHorizontalBarChart()
|
||||
|
||||
// // 政务网区截图
|
||||
// method.ZWW_FW1() //截取防火墙的图片
|
||||
// method.ZWW_TSGZ() //截取态势感知的图片
|
||||
// method.ZWW_DTCLOUD() //截取运维中心的图片
|
||||
// method.ZWWW_BAOLJ() //截取堡垒机的图片
|
||||
// 互联网区运维巡检文档生成
|
||||
// wps.HW_SYS_Word() //运维平台word文档生成
|
||||
// // 政务网区运维巡检文档生成
|
||||
// wps.ZWW_SYS_Word() //运维平台word文档生成
|
||||
// // 安全巡检文档生成
|
||||
// wps.SAFET_Word() //安全巡检文档生成
|
||||
//互联网防火墙ips事件获取 安全事件表格生成
|
||||
// attackevent.Fw_event(attackevent.HW_fw1_cookie(), "2025-03-18") //将防火墙安全事件存放到xlsx文件中
|
||||
//政务网防火墙ips事件获取 安全事件表格生成
|
||||
// attackevent.Zww_event(attackevent.HW_zww1_cookie(), "2025-03-18") //将防火墙安全事件存放到xlsx文件中
|
||||
//nessus的csv文件生成docx报告
|
||||
// nessus.CSV_damo()
|
||||
//翻译模块调用腾讯xt翻译月500万字限制
|
||||
// log.Println(wps.Translate("hello"))
|
||||
// wps.Weekly_word()
|
||||
//调用云平台接口
|
||||
// dtcloud.EcsList() //获取ecs列表及其详情(完成)
|
||||
// dtcloud.Process() //获取单ecs进程使用情况
|
||||
// dtcloud.Memory() //获取单个ecs的memory使用情况
|
||||
// dtcloud.Cpu() ///获取单个ecs的cpu使用情况
|
||||
// dtcloud.TenantList() //获取租户列表(完成)
|
||||
//获取docx文档中所有的图片
|
||||
// wps.Weekly_get_img("")
|
||||
// wps.DrawHorizontalBarChart()
|
||||
|
||||
}
|
||||
} else {
|
||||
log.Println("没有授权,请联系管理员")
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ func ZWW_FW1() {
|
||||
if err := page.Locator("#login_button").Click(); err != nil {
|
||||
log.Fatalf("could not click button: %v", err)
|
||||
}
|
||||
page.WaitForTimeout(1000)
|
||||
page.WaitForTimeout(3000)
|
||||
page.Evaluate(`
|
||||
const now = new Date();
|
||||
const year = now.getFullYear();
|
||||
|
58
tool/key.go
@ -1,11 +1,11 @@
|
||||
package tool
|
||||
|
||||
/*
|
||||
@Author : Uyynot
|
||||
@Email : uyynot@qq.com
|
||||
@Time : 2023/11/20 10:07
|
||||
@File : test.go
|
||||
@Project : test
|
||||
@Author : 李星辰
|
||||
@Email : 1352113079@qq.com
|
||||
@Time : 2025/03/20 16:43
|
||||
@File : key.go
|
||||
@Project : key
|
||||
@Desc :
|
||||
*/
|
||||
|
||||
@ -21,29 +21,11 @@ import (
|
||||
"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
|
||||
}
|
||||
// 私钥
|
||||
var privateKey = "-----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-----"
|
||||
|
||||
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-----")
|
||||
pri_key, err := ReadParsePrivaterKey(privateKey)
|
||||
if err != nil {
|
||||
log.Println("err:", err)
|
||||
}
|
||||
@ -70,6 +52,7 @@ func Keyprin(b64CipherTest string) Auth_s {
|
||||
return auth
|
||||
}
|
||||
|
||||
// 授权信息
|
||||
type Auth_s struct {
|
||||
SerialNumber string `json:"serialNumber"` //主板编号
|
||||
Username string `json:"username"` //用户名
|
||||
@ -81,7 +64,7 @@ type Auth_s struct {
|
||||
|
||||
// 解密
|
||||
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-----")
|
||||
pri_key, err := ReadParsePrivaterKey(privateKey)
|
||||
if err != nil {
|
||||
log.Println("err:", err)
|
||||
}
|
||||
@ -99,3 +82,24 @@ func KeyStr(b64CipherTest string) string {
|
||||
}
|
||||
return string(decryptedPlainText)
|
||||
}
|
||||
|
||||
// 读取私钥文件,解析出私钥对象
|
||||
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
|
||||
}
|
||||
|