SM3 国密使用遇到的问题

1、SM3算法使用的大多为unsigned long,在64-windows下占4字节空间,64-linux下占8字节空间

    因为这个导致了两个平台下,相同的内容,相同字节序(都是小端),得出的结果不一致

    强制使用unsigned int可以得到同样的结果

2、网上摘录

    嵌入式使用SM3时,会导致结果不一致,由于ARM处理器没有循环左移,把

    #define  SHL(x,n) (((x) & 0xFFFFFFFF) << n)   -> #define  SHL(x,n) (((x) & 0xFFFFFFFF) << n%32) 

    #define ROTL(x,n) (SHL((x),n) | ((x) >> (32 - n))) -> #define ROTL(x,n) (SHL((x),n) | ((x) >> (32 - n%32)))

    可以解决

你可能感兴趣的:(C/C++,linux)