AES-128加密算法Go代码测量加密解密需要的时间
时间: 2024-09-10 11:02:55 浏览: 57
php使用openssl_encrypt中的AES-128-ECB加密解密
AES-128是一种对称加密算法,常用于保护数据安全。在Go语言中,你可以使用`crypto/aes`包来实现AES-128加密和解密。为了测量加密和解密操作所需的时间,可以使用`time`包中的`Time`结构来记录开始和结束时间。
下面是一个简单的示例,展示了如何测量加密和解密的耗时:
```go
package main
import (
"crypto/aes"
"crypto/cipher"
"encoding/hex"
"fmt"
"math/rand"
"time"
)
func main() {
key := []byte("0123456789abcdef0123456789abcdef") // 16字节随机AES密钥
block, err := aes.NewCipher(key)
if err != nil {
panic(err)
}
input := make([]byte, aes.BlockSize) // 16字节输入数据
rand.Read(input) // 随机填充数据
// 测量加密时间
startEncrypt := time.Now()
encrypted := make([]byte, len(input))
encrypter := cipher.NewCBCEncrypter(block, key[:])
encrypter.CryptBlocks(encrypted, input)
durationEncrypt := time.Since(startEncrypt)
// 测量解密时间
startDecrypt := time.Now()
decrypted := make([]byte, len(input))
decrypter := cipher.NewCBCDecrypter(block, key[:])
decrypter.CryptBlocks(decrypted, encrypted)
durationDecrypt := time.Since(startDecrypt)
fmt.Printf("Encrypted data: %x\n", encrypted)
fmt.Printf("Decrypted data: %x\n", decrypted)
fmt.Printf("Encryption time: %v\n", durationEncrypt)
fmt.Printf("Decryption time: %v\n", durationDecrypt)
}
```
这个例子首先生成一个随机的AES密钥,然后创建一个AES块模式,接着进行加密和解密,并计算每个过程所花费的时间。请注意,实际运行时的实际时间可能会因系统性能差异而有所变化。
阅读全文