gpt4 book ai didi

Golang 3DES 部分解密加密字符串

转载 作者:IT王子 更新时间:2023-10-29 02:36:02 26 4
gpt4 key购买 nike

用3des解密时给定的密文没有完全解密,不知道哪里错了,帮我完成解密错误

代码位于Go Playground用于昆虫和运行

package main

import (
"crypto/des"
"encoding/hex"
"fmt"
)

func main() {

// Mimimum Key Size of Length 24
key := "mysecretPasswordkeySiz24"
plainText := "https://8gwifi.org"
ct := EncryptTripleDES([]byte(key),plainText)
fmt.Printf("Original Text: %s\n",plainText)
fmt.Printf("3DES Encrypted Text: %s\n", ct)
DecryptTripleDES([]byte(key),ct)

}

func EncryptTripleDES(key []byte, plaintext string) string {
c,err := des.NewTripleDESCipher(key)
if err != nil {
fmt.Errorf("NewTripleDESCipher(%d bytes) = %s", len(key), err)
panic(err)
}

out := make([]byte, len(plaintext))
c.Encrypt(out, []byte(plaintext))
return hex.EncodeToString(out)

}


func DecryptTripleDES(key []byte, ct string) {

ciphertext, _ := hex.DecodeString(ct)
c, err := des.NewTripleDESCipher([]byte(key))
if err != nil {
fmt.Errorf("NewTripleDESCipher(%d bytes) = %s", len(key), err)
panic(err)
}
plain := make([]byte, len(ciphertext))
c.Decrypt(plain, ciphertext)
s := string(plain[:])
fmt.Printf("3DES Decrypyed Text: %s\n", s)
}

输出

Original Text:  https://8gwifi.org
3DES Encrypted Text: a6e5215154bf86d000000000000000000000
3DES Decrypyed Text: https://

最佳答案

the given encrypted text is not fully decrypted

您提供的加密文本已完全解密。问题不在于(还)解密而是你的加密。如文档所述,des.NewTripleDESCipher 返回一个 cipher.Block 并且 cipher.Block.Encrypt 只加密输入数据的第一个 block 。鉴于 DES 的 block 大小为 8 字节,只有输入数据的前 8 字节被加密,即 https://

这意味着为了加密所有数据,您必须加密所有 block 。类似地,您需要在解密时解密所有 block - 但 cipher.Block.Decrypt 也只解密一个 block 。

除此之外,DES 已损坏,所以不要将其用于严重的事情。

关于Golang 3DES 部分解密加密字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53332164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com