私钥改成字符串

master
修改密码漏洞修复完成 8 months ago
parent 43225a11e2
commit bdaf4bb678

@ -216,7 +216,20 @@ func GenRsaKey(bits int) (prvkey, pubkey []byte, err error) {
} }
func ParseRSAPrivateKeyFromPEM(pemData string) (*rsa.PrivateKey, error) {
var keyData = []byte(pemData)
// 解析PEM块
block, _ := pem.Decode(keyData)
if block == nil {
return nil, fmt.Errorf("private key error not block in file")
}
// 解析RSA私钥
privateKey, err := x509.ParsePKCS1PrivateKey(block.Bytes)
if err != nil {
return nil, err
}
return privateKey, nil
}
func parsePrivateKey(privateKeyFile string) (*rsa.PrivateKey, error) { func parsePrivateKey(privateKeyFile string) (*rsa.PrivateKey, error) {
// 读取私钥文件 // 读取私钥文件
@ -337,6 +350,43 @@ func RSA_Decrypts(cipherText []byte, path string) []byte {
return bytesDecrypt return bytesDecrypt
} }
// RSA_DecryptsOne RSA解密支持分段解密
func RSA_DecryptsOne(cipherText []byte, privateKeyStr string) []byte {
//打开文件
var bytesDecrypt []byte
// 读取私钥文件转成字节数组
keyData := []byte(privateKeyStr)
//pem解码
block, _ := pem.Decode(keyData)
//X509解码
privateKey, err := x509.ParsePKCS8PrivateKey(block.Bytes)
if err != nil {
fmt.Println(err.Error())
os.Exit(0)
}
p := privateKey.(*rsa.PrivateKey)
keySize := p.Size()
srcSize := len(cipherText)
log.Println("密钥长度", keySize, "密文长度", srcSize)
var offSet = 0
var buffer = bytes.Buffer{}
for offSet < srcSize {
endIndex := offSet + keySize
if endIndex > srcSize {
endIndex = srcSize
}
bytesOnce, err := rsa.DecryptPKCS1v15(rand.Reader, p, cipherText[offSet:endIndex])
if err != nil {
return nil
}
buffer.Write(bytesOnce)
offSet = endIndex
}
bytesDecrypt = buffer.Bytes()
return bytesDecrypt
}
// RsaEncryptBlock 公钥加密-分段 // RsaEncryptBlock 公钥加密-分段
func RsaEncryptBlock(src []byte, path string) (bytesEncrypt []byte, err error) { func RsaEncryptBlock(src []byte, path string) (bytesEncrypt []byte, err error) {
//打开文件 //打开文件
@ -389,7 +439,7 @@ func RsaEncryptBlock(src []byte, path string) (bytesEncrypt []byte, err error) {
func timing(client mqtt.Client) { func timing(client mqtt.Client) {
//定时器10秒钟执行一次 //定时器10秒钟执行一次
ticker := time.NewTicker(5 * time.Second) ticker := time.NewTicker(10 * time.Second)
for { for {
time := <-ticker.C time := <-ticker.C
fmt.Println("定时器====>", time.String()) fmt.Println("定时器====>", time.String())
@ -424,6 +474,8 @@ func timing(client mqtt.Client) {
//decrptCode := RSA_Decrypts(decodeByte, privatePath) //decrptCode := RSA_Decrypts(decodeByte, privatePath)
//fmt.Println("解密后的字符串:") //fmt.Println("解密后的字符串:")
//fmt.Println(string(decrptCode)) //fmt.Println(string(decrptCode))
} }
} }
} }
@ -445,14 +497,19 @@ var messagePubHandler mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Me
if err != nil { if err != nil {
fmt.Println(err.Error()) fmt.Println(err.Error())
} }
decrptCode := RSA_Decrypts(decodeByte, privatePath) //decrptCode := RSA_Decrypts(decodeByte, privatePath)
privateKeyPEM := `-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL3dDf12MSeIY2jm5QpUSSoMhrJOWLbOt5fXQepPaNO0M30A+3C4SFZrM/9WA5ehazO1u1m1LAkYzoSDRH3MMJsrJC3lCGDeOROteu+safuP9k/npU1YQu/+Ll2xEJNxyvUx4jLGM4LamiMI6ytM3gdnOAGP4YRQo9Etwo6I986yg/seCQC5rza9M4iBamoin7U8h9yOMKrM6xK/k9CcY/vn5+Uhe3Pvk4qj/2Ff3OXkkc1wfdILqdLwLOKL0Tb3ZciwG0p1CKO80yf5hyYoWjqZk5Rcd07nTo2gqTFGfLl9sqI9/+ipMDtnHlAgMBAAECggEATJd5yCC6lusdMRO5FOBUyUaUi9X2i1AU+RZKAynQySvSnbavUgExW58tRCHBUrGW9gJp59ft1N8J8hHhSO18NDY4H7laBlVdnwmYjRqtFo2VQO6sD4G8JRDION5f2iIxn/b2fYDI9H8vILfJRbNgtTSILyGlzTYUZzhLKxCh+8IsN96Nic8wa5COd1vZZmdhf2y8TG8clFWmozaScNSAATx7y+8XLVWjjWiIRZ6xQvx0uQPUParc9KihXXTKR2pA22yPIdz+U4MGD4kC0eczlcFKZ/dYv9e7OIGgnJfT0idSCu7nYb1pxJ1LxD9fS6IScNTF5dSe0OIL98e+XdyoAQKBgQDRep+5cW4iAKrEMH+djmcXAkoMiYtNVtnu0efLE8dP6vjYytQi368X9SdcASbfrQ31eEZmr/xQnlUF8oyHGkI38YS8dpAHzQcrkP3BljbbzB/3gJZaUdghGsDrK0xAJIzzmFKQpeKnGtr23vxUgaGrNsCYvQ0eQ7+5056KXS4r5QKBgQC6r8xtRSaje6L4WIydjWvYywsmRO0Of0aJLMDA/Wt2MWhHfh7ba9oI1cKGN80ap7xB2a9lQLgpv+C53wNtE5SpvjxsikAj96nUMMhGy9ojXrUith6HQhiINETz6Shnznd+AyrXP6KI/RpfA5nkDB5nrJxODwtYLP467IL7Cv7OAQKBgQCl4KxKdH/5fP28jYsAgJsxpSZt9xzQCU5Zxu396ZOSvUaApVyGoQpNtluMh3z48lhzYOKevgzW6gn5w69z7F8zXZT2iAxVoQ1kelP2z7RxKJrHqpNkwhqbXEwX7RlcUZUr8BqxYCqymJl7k+fMIzqaEalBSbLxnEReKi0I8/Bz4QKBgHK4b0ZCtVDHPEmimJ6E9l4dv/c/afF7swu+zaCK2ouiJvOwBCRQbYb6XPR/u/GCXASXUdpF4CX/vIhcDE3uN2/r8FO+zVWM7vbvF1OyF5WesG7pPW9e5ZZlkG3WvLa1wOZV6fCmMSo/ZwI2Q05JSDHrd43cXttLotrw1jiQ9C4BAoGBAKi4SOoOVQ5J5HQCDkBwPbG1AOLHFinzfoDl26GF/8Hy7fmmd1JiRTFldQp/A9VTAABz3sVYmMB92HSIaJhuDMoYJNI2Cf/cZifsv7vUL8cbLn+lPsKsebiuB0m0g4P2qLwLfegfNGEgA7lA5HIz3SELqbdp3iuqJeQl1fsJqD74
-----END PRIVATE KEY-----`
decrptCode := RSA_DecryptsOne(decodeByte, privateKeyPEM)
fmt.Println("解密后的字符串:") fmt.Println("解密后的字符串:")
fmt.Println(string(decrptCode)) fmt.Println(string(decrptCode))
fmt.Println("-----user--------") fmt.Println("-----user--------")
var user models.User var user models.User
json.Unmarshal(decrptCode, &user) json.Unmarshal(decrptCode, &user)
fmt.Println(user) fmt.Println(user)
//models.SaveUser(&user)
if models.GetUser(&user) { if models.GetUser(&user) {
models.UpdateUser(&user) models.UpdateUser(&user)

Loading…
Cancel
Save