我目前正在尝试从此文档中实现FF3模式下的NIST FPE: http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-38G.pdf
在那里给出了在步骤1)到5)期间进行的各种计算的示例。 http://csrc.nist.gov/groups/ST/toolkit/documents/Examples/FF3samples.pdf
目前,除了4.iii)之外我没事了(REVB(CIPHREVB(K)REVB(P))。
我有以下代码:
var reversedP = new Buffer('cd8101000000000000000000730a33fa', 'hex');
var reversedKey = new Buffer('946afc046f6d037f4faa80d5d85943ef', 'hex');
var cipher = crypto.createCipher('aes-128-ecb', reversedKey);
var cypherText = Buffer.concat([cipher.update(reversedP), cipher.final()]);
var s = reverseArrayToBuffer(cypherText);
在我的例子中cypherText = 0a 30 e9 3e a5 6e b7 bc c7 e1 9a 64 83 9b ec 3a cb e9 f2 60 5f 1c 90 d9 e6 56 42 8e 63 83 11 6f
和s = 6f 11 83 63 8e 42 56 e6 d9 90 1c 5f 60 f2 e9 cb 3a ec 9b 83 64 9a e1 c7 bc b7 6e a5 3e e9 30 0a
根据nist示例,它应该是这样的: DE7F3E4A 210E3DFF 346924FB FF750039
感谢您的帮助。