61 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			61 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | #include "PSDGenerate.h"
 | ||
|  | 
 | ||
|  | /********************************************************************************************************************
 | ||
|  |  *                                  新版密码支持BCD码                                                               * | ||
|  | ********************************************************************************************************************/ | ||
|  | 
 | ||
|  | uint64_t Scramble(uint64_t number, uint64_t max) | ||
|  | { | ||
|  | 		int i = 0; | ||
|  | 		// some random values
 | ||
|  | 		uint64_t scramblers[] = { 3, 5, 7, 31, 343, 2348, 89897 }; | ||
|  | 		number += (max / 7) + 6; | ||
|  | 		number %= max; | ||
|  | 		// shuffle according to divisibility
 | ||
|  | 		for (i = 0; i < 7; i++) | ||
|  | 		{ | ||
|  | 				if (scramblers[i] >= max / 3) break; | ||
|  | 				number = ((number * scramblers[i]) % max) | ||
|  | 					+ ((number * scramblers[i]) / max); | ||
|  | 		} | ||
|  | 
 | ||
|  | 
 | ||
|  | 		return number % max; | ||
|  | } | ||
|  | 
 | ||
|  | int GetPasswordByUidCode(const uint8_t *uidcode,uint8_t* psd) | ||
|  | { | ||
|  | 	uint64_t val = 0,val1 = 0; | ||
|  | 	int i= 0; | ||
|  | 	uint64_t ulBCDPsd = 0; | ||
|  | 
 | ||
|  | 	for(i=2;i<10;i++) | ||
|  | 	{ | ||
|  | 		val *=10; | ||
|  | 		val += uidcode[i]-0x30; | ||
|  | 	} | ||
|  | 	val += uidcode[10]; | ||
|  | 	 | ||
|  | 	for(i=11;i<16;i++) | ||
|  | 	{ | ||
|  | 		val1 *=10; | ||
|  | 		val1 += uidcode[i]-0x30; | ||
|  | 	} | ||
|  |   val = val  + val1; | ||
|  |   ulBCDPsd = Scramble(val, 0xFFFFFFFF); | ||
|  | 
 | ||
|  | 	 | ||
|  | 	psd[0] = (ulBCDPsd&0xFF000000)>>24; | ||
|  | 	psd[1] = (ulBCDPsd&0x00FF0000)>>16; | ||
|  | 	psd[2] = (ulBCDPsd&0x0000FF00)>>8; | ||
|  | 	psd[3] =  ulBCDPsd&0x000000FF; | ||
|  | 	 | ||
|  | 	return 0; | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 |