我先前做的对于message的加密也是用crypto api来实现的,整个程序是为了实现这样的一套东西。浏览器端相关页面载入一个activex control来对与本地的一个message来进行签名,然后发到server端进行验证,而用来签名的private key是由导入IE的一个带私钥的证书来提供的。server验证完毕后,返回bool的参数来给浏览器。如果这样的话,我担心我传诵出去的signature和public key调用JAVA的API来验证,无法进行,格式并不匹配。不知道有没有实现了的高手指教。
这样的步骤确实是可以取出PUBLIC KEY的,但是PK是被装在一个BYTE[]里面的。我不知道怎么样能够象使用JAVA的API那样能够输出能够有实际意义的STRING来看PUBLIC KEY的内容。请问有人能解释下吗?我觉得很可能CRYPTO API就是这样把PK装在BYTE中,而没有考虑能够输出成给人看懂的情况。还有一个问题CryptSignMessage()这个函数中,MSDN介绍说了其中有一个参数fDetachedSignature
[in] TRUE if this is to be a detached signature. Otherwise, FALSE. If this parameter is set to TRUE, only the signed hash is encoded in pbSignedBlob. Otherwise, both rgpbToBeSigned and the signed hash are encoded.
这里的encoded是说的从string到byte[]用的编码么,那么这个编码用的是什么标准呢?还是用的是在SigParams.dwMsgEncodingType = MY_ENCODING_TYPE;参数这里设置的编码类型呢?
这样的步骤确实是可以取出PUBLIC KEY的,但是PK是被装在一个BYTE[]里面的。我不知道怎么样能够象使用JAVA的API那样能够输出能够有实际意义的STRING来看PUBLIC KEY的内容。请问有人能解释下吗?我觉得很可能CRYPTO API就是这样把PK装在BYTE中,而没有考虑能够输出成给人看懂的情况。还有一个问题CryptSignMessage()这个函数中,MSDN介绍说了其中有一个参数fDetachedSignature
[in] TRUE if this is to be a detached signature. Otherwise, FALSE. If this parameter is set to TRUE, only the signed hash is encoded in pbSignedBlob. Otherwise, both rgpbToBeSigned and the signed hash are encoded.
这里的encoded是说的从string到byte[]用的编码么,那么这个编码用的是什么标准呢?还是用的是在SigParams.dwMsgEncodingType = MY_ENCODING_TYPE;参数这里设置的编码类型呢?
------------------------------------------
这里的encoded可能是DER编码