forked from GmSSL/GmSSL-Java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSm3Pbkdf2Test.java
More file actions
42 lines (35 loc) · 1.46 KB
/
Sm3Pbkdf2Test.java
File metadata and controls
42 lines (35 loc) · 1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*
* Copyright 2014-2023 The GmSSL Project. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the License); you may
* not use this file except in compliance with the License.
*
* http://www.apache.org/licenses/LICENSE-2.0
*/
package org.gmssl;
import org.junit.Assert;
import org.junit.Test;
/**
* @author yongfeili
* @email 290836576@qq.com
* @date 2023/10/20
* @description Sm3Pbkdf2 unit test
*/
public class Sm3Pbkdf2Test {
/**
* PBKDF2 (Password-Based Key Derivation Function 2) is a cryptographic algorithm used to derive a key from a password.
* It employs a pseudorandom function to generate the key, and the length of the derived key can be arbitrarily chosen. However, PBKDF2 allows for multiple iterations of the computation to further enhance security.
* By incorporating a salt value (random data) along with the plaintext password, PBKDF2 generates a salted key, which greatly improves resistance against attacks like rainbow table attacks.
*/
@Test
public void deriveKeyTest(){
Sm3Pbkdf2 kdf = new Sm3Pbkdf2();
Random rng = new Random();
byte[] salt = rng.randBytes(Sm3Pbkdf2.DEFAULT_SALT_SIZE);
String pass = "P@ssw0rd";
byte[] key = kdf.deriveKey(pass, salt, Sm3Pbkdf2.MIN_ITER * 2, 16);
String keyHexStr = HexUtil.byteToHex(key);
//System.out.println(keyHexStr);
Assert.assertNotNull("data is empty exception!",keyHexStr);
}
}