1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

crypto: add a crypto.des module (#13065)

This commit is contained in:
688862
2022-01-07 19:51:37 +08:00
committed by GitHub
parent 7276705684
commit 2b42ea9883
7 changed files with 793 additions and 0 deletions

View File

@ -0,0 +1,51 @@
import crypto.des
const (
key = '123456789012345678901234'.bytes()
iv = 'abcdegfh'.bytes()
str = 'aaaaaaaa'
)
fn test_triple_des() {
mut src := str.bytes()
triple_des_en(mut src, key, iv)
assert src.hex() == '45902cf00aa1df46'
triple_des_de(mut src, key, iv)
assert src.bytestr() == str
println('test_triple_des ok')
}
fn test_des() {
mut src := str.bytes()
des_en(mut src, key[..8], iv)
assert src.hex() == '72dca13c37223cf0'
des_de(mut src, key[..8], iv)
assert src.bytestr() == str
println('test_des ok')
}
fn des_en(mut src []byte, key []byte, iv []byte) {
block := des.new_cipher(key)
block.encrypt(mut src, src.clone())
}
fn des_de(mut src []byte, key []byte, iv []byte) {
block := des.new_cipher(key)
block.decrypt(mut src, src.clone())
}
fn triple_des_en(mut src []byte, key []byte, iv []byte) {
block := des.new_triple_des_cipher(key)
block.encrypt(mut src, src.clone())
}
fn triple_des_de(mut src []byte, key []byte, iv []byte) {
block := des.new_triple_des_cipher(key)
inbuf := src.clone()
block.decrypt(mut src, inbuf)
}