v

Зеркало из https://github.com/vlang/v
Форк
0
41 строка · 1.1 Кб
1
module main
2

3
import encoding.hex
4
import encoding.base64
5
import crypto.ed25519
6

7
// adapted from https://asecuritysite.com/signatures/ed25519
8
fn main() {
9
	msg := 'Hello Girl'
10

11
	publ, priv := ed25519.generate_key()!
12

13
	m := msg.bytes()
14

15
	sig := ed25519.sign(priv, m)!
16

17
	println('=== Message ===')
18
	println('Msg: ${msg} \nHash: ${m}')
19

20
	println('=== Public key ===')
21
	println('Public key (Hex): ${hex.encode(publ)}')
22
	println('   Public key (Base64): ${base64.encode(publ)}')
23

24
	println('=== Private key ===')
25
	println('Private key: ${priv.seed().hex()}') // priv[0:32]
26
	println('   Private key (Base64): ${base64.encode(priv.seed())}') // priv[0:32]
27
	println('   Private key (Base64) Full key:  ${base64.encode(priv)}')
28
	println('   Private key (Full key in Hex): ${hex.encode(priv)}')
29

30
	println('=== signature (R,s) ===')
31
	println('signature: R=${sig[0..32].hex()} s=${sig[32..64].hex()}')
32
	println('   signature (Base64)=${base64.encode(sig)}')
33

34
	rtn := ed25519.verify(publ, m, sig)!
35

36
	if rtn {
37
		println('Signature verified :${rtn}')
38
	} else {
39
		println('signature does not verify :${!rtn}')
40
	}
41
}
42

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.