Linux 프로그램에서는 Argon2
명령줄에 솔트를 제공해야 합니다. 이는 솔트를 인쇄 가능한 문자로 제한합니다. 바이너리 문자열을 솔트로 어떻게 사용할 수 있나요?
# argon2 -h
Usage: argon2 [-h] salt [-i|-d|-id] [-t iterations] [-m log2(memory in KiB) | -k memory in KiB] [-p parallelism] [-l hash length] [-e|-r] [-v (10|13)]
Password is read from stdin
Parameters:
salt The salt to use, at least 8 characters
-i Use Argon2i (this is the default)
-d Use Argon2d instead of Argon2i
-id Use Argon2id instead of Argon2i
-t N Sets the number of iterations to N (default = 3)
-m N Sets the memory usage of 2^N KiB (default 12)
-k N Sets the memory usage of N KiB (default 4096)
-p N Sets parallelism to N threads (default 1)
-l N Sets hash output length to N bytes (default 32)
-e Output only encoded hash
-r Output only the raw bytes of the hash
-v (10|13) Argon2 version (defaults to the most recent version, currently 13)
-h Print argon2 usage
표기법을 사용해 보았는데 \x0A
작동하지 않습니다. 아래에서 볼 수 있듯이 \x0A
다양한 \x0a
해시를 생성합니다.
# cat /tmp/keyfile | argon2 "\x0A\x0B\x0C\x0D\x1A\x1B\x1C\x1D" -id -t 4 -m 5 -p 1 -l 64 -r
6694bba14b3955a77beea3fb4c6018bd86953627949df2bc7e57bc7597519d2fed64a24380757bf6d963115656ce0ddcf59b2504b736036c239101c3e069849b
# cat /tmp/keyfile | argon2 "\x0a\x0B\x0C\x0D\x1A\x1B\x1C\x1D" -id -t 4 -m 5 -p 1 -l 64 -r
3e97b90537a9ecdceaee638aee2b122c89a2cc3e03630bac31cf72c9b7e3e0565a4c3945eb7fc2a04922bb1453cc5fdafc3303327097749b0ceb87111cd1349c
추가 정보를 위해 Argon을 사용하여 LUKS의 PBKDF를 시뮬레이션하고 싶습니다.
답변1
기능 요청에서
argon2 실행 파일: base64 인코딩 #264에 솔트를 제공할 수 있는 옵션 -b를 추가합니다.,
답변
저자는 -b
base64 형식의 솔트를 사용하는 새로운 매개 변수를 언급했습니다.
argon2의 소스는 실제로 릴리스보다 더 최근에 나온 것 같습니다.
스위치는 다음과 같이 사용됩니다.
argon2 <base64-encoding> -b
옵션이 포함된 최신 버전을 얻으려면 소스에서 argon2를 컴파일해야 할 수도 있습니다 -b
. 그래도 작동하지 않으면 "charno"로 식별된 작성자에게 문의하세요.
답변2
cat
내부 셸에 있는 파일 만 작동하는 것으로 나타났습니다 .
% xxd argon2id.salt
00000000: abbc 1b5b d919 2bce 0459 1c31 97cc 03d9 ...[..+..Y.1....
00000010: 135a 6f54 6a1b 81b8 c693 0e19 d1a0 0c15 .ZoTj...........
% cat keyfile | argon2 "$(cat argon2id.salt)" -id -t 4 -m 5 -p 1 -l 64
Type: Argon2id
Iterations: 4
Memory: 32 KiB
Parallelism: 1
Hash: 83ed8343d0539ba4f44fd79ac1becce1c7dd5001b7098f0cfb6a6cc7a07123890ccafb4cf8b7a8cb3ba1475e738f1268fb66eb89c42faf8460272878781cd952
Encoded: $argon2id$v=19$m=32,t=4,p=1$q7wbW9kZK84EWRwxl8wD2RNab1RqG4G4xpMOGdGgDBU$g+2DQ9BTm6T0T9eawb7M4cfdUAG3CY8M+2psx6BxI4kMyvtM+LeoyzuhR15zjxJo+2bricQvr4RgJyh4eBzZUg
0.000 seconds
Verification ok
특수 문자는 이 장난감도 깨지지 않습니다.
% xxd another.salt
00000000: 6027 2228 2960 2722 2829 6027 2228 2960 `'"()`'"()`'"()`
00000010: 2722 2829 6027 2228 2960 2722 2829 6027 '"()`'"()`'"()`'
00000020: 2228 29
% cat keyfile| argon2 "$(cat another.salt)" -id -t 4 -m 5 -p 1 -l 64
Type: Argon2id
Iterations: 4
Memory: 32 KiB
Parallelism: 1
Hash: c5de872b35447ad75b3a9581fb1cf85a31ae61d92594b61888e8ca4701c32b13639656f5222cde7e5cb59be0731e0782871315747f542af0941cecfcfecb6027
Encoded: $argon2id$v=19$m=32,t=4,p=1$YCciKClgJyIoKWAnIigpYCciKClgJyIoKWAnIigpYCciKCk$xd6HKzVEetdbOpWB+xz4WjGuYdkllLYYiOjKRwHDKxNjllb1Iizefly1m+BzHgeChxMVdH9UKvCUHOz8/stgJw
0.000 seconds
Verification ok