@@ -10,7 +10,7 @@ use crate::config::{TokenStyle, SaTokenConfig};
1010use crate :: token:: TokenValue ;
1111use crate :: token:: jwt:: { JwtManager , JwtClaims , JwtAlgorithm } ;
1212use chrono:: Utc ;
13- use sha2:: { Sha256 , Digest } ;
13+ use sha2:: { Sha256 , Sha512 , Digest } ;
1414
1515pub struct TokenGenerator ;
1616
@@ -74,10 +74,9 @@ impl TokenGenerator {
7474
7575 /// 生成随机字符串
7676 pub fn generate_random ( length : usize ) -> TokenValue {
77- use sha2:: { Sha256 , Digest } ;
7877 let uuid = Uuid :: new_v4 ( ) ;
7978 let random_bytes = uuid. as_bytes ( ) ;
80- let hash = Sha256 :: digest ( random_bytes) ;
79+ let hash = Sha512 :: digest ( random_bytes) ;
8180 let hex_string = hex:: encode ( hash) ;
8281 TokenValue :: new ( hex_string[ ..length. min ( hex_string. len ( ) ) ] . to_string ( ) )
8382 }
@@ -402,4 +401,38 @@ mod tests {
402401 // UUID 格式不包含 '.'
403402 assert ! ( !token. as_str( ) . contains( '.' ) ) ;
404403 }
404+
405+
406+ #[ test]
407+ fn test_random_32_length ( ) {
408+ let config = SaTokenConfig {
409+ token_style : TokenStyle :: Random32 ,
410+ ..SaTokenConfig :: default ( )
411+ } ;
412+ let token = TokenGenerator :: generate_with_login_id ( & config, "user_random" ) ;
413+ assert ! ( !token. as_str( ) . is_empty( ) ) ;
414+ assert_eq ! ( token. as_str( ) . len( ) , 32 ) ;
415+ }
416+
417+ #[ test]
418+ fn test_random_64_length ( ) {
419+ let config = SaTokenConfig {
420+ token_style : TokenStyle :: Random64 ,
421+ ..SaTokenConfig :: default ( )
422+ } ;
423+ let token = TokenGenerator :: generate_with_login_id ( & config, "user_random" ) ;
424+ assert ! ( !token. as_str( ) . is_empty( ) ) ;
425+ assert_eq ! ( token. as_str( ) . len( ) , 64 ) ;
426+ }
427+
428+ #[ test]
429+ fn test_random_128_length ( ) {
430+ let config = SaTokenConfig {
431+ token_style : TokenStyle :: Random128 ,
432+ ..SaTokenConfig :: default ( )
433+ } ;
434+ let token = TokenGenerator :: generate_with_login_id ( & config, "user_random" ) ;
435+ assert ! ( !token. as_str( ) . is_empty( ) ) ;
436+ assert_eq ! ( token. as_str( ) . len( ) , 128 ) ;
437+ }
405438}
0 commit comments