- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 202 字节 key ,用于解密二进制文件。
StringSource keyStr( key, Z3_KEY_LENGTH, true );
AutoSeededRandomPool rng;
ECIES<ECP>::Decryptor ellipticalEnc( keyStr );
unsigned char *tmpBuffer( new unsigned char[ src.Size() ] );
DecodingResult dr = ellipticalEnc.Decrypt( rng, src.Data(), src.Size(), tmpBuffer );
我尝试使用 jsafejce 来实现此目的:
PKCS8EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(key);
KeyFactory factory = KeyFactory.getInstance("EC", "JsafeJCE");
PrivateKey privateKey = factory.generatePrivate(privKeySpec);
Cipher eciesDecrypter = Cipher.getInstance("ECIES/SHA1/HMACSHA1", "JsafeJCE");
和
Cipher eciesDecrypter = Cipher.getInstance("ECIESwithXOR/SHA1/HMACSHA1", "JsafeJCE");
但是第一个我得到一个 block 错误,必须除以 16,第二个我得到一个 mac 检查错误。
有人有什么建议吗?
最佳答案
嗯,我真的不知道你想在代码中做什么。我会尝试回答一些问题。
<小时/>Convert ECIES ECP CryptoPP to JAVA
要了解 Crypto++ 的要点,其难度如下:
// Assuming your key was DER Encoded
byte key[Z3_KEY_LENGTH] = ...;
ECIES<ECP>::Decryptor decryptor;
decryptor.BERDecodePublicKey(ArraySource(key, sizeof(key)).Ref(), false, sizeof(key));
const ECPPoint& point = decryptor.GetPublicElement();
const Integer& x = point.x;
const Integer& y = point.y;
如果您的 key 未经过 DER 编码,请参阅 Keys and Formats来自 Crypto++ 维基。您还可以在 Elliptic Curve Integrated Encryption Scheme 上找到 wiki 页面。 .
Java 7 提供和 ECPoint class ,并且它需要 X 和 Y 坐标。
<小时/>> ECIES<ECP>::Decryptor ellipticalEnc( keyStr );
> unsigned char *tmpBuffer( new unsigned char[ src.Size() ] );
> DecodingResult dr = ellipticalEnc.Decrypt( rng, src.Data(), src.Size(), tmpBuffer );
这看起来不太正确,但您没有显示足够的代码。
size_t maxLength = decryptor.MaxPlaintextLength( src.Size() );
unsigned char *tmpBuffer = new unsigned char[ maxLength ];
DecodingResult dr = ellipticalEnc.Decrypt( rng, src.Data(), src.Size(), tmpBuffer );
if( !result.isValidCoding )
throw runtime_error("failed to decrypt cipher text");
unsigned char *buffer = new unsigned char[ result.messageLength ];
std::cpy(tmpBuffer, buffer, result.messageLength);
关于java - 将 ECIES ECP CryptoPP 转换为 JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12628315/
我正在使用 SAML 为运行 tomcat 的 Web 服务器实现 SSO 身份验证流程。使用 POST 或重定向绑定(bind)时一切正常,但根据我所读到的内容,为了支持 REST API 前面的
我有一个 202 字节 key ,用于解密二进制文件。 StringSource keyStr( key, Z3_KEY_LENGTH, true ); AutoSeededRandomPool rn
PingFederate 和 ADFS 是否支持 SAML ECP(增强型客户端和代理)配置文件?如果是,是否有任何文档? 最佳答案 是的,PF 支持 ECP,因为我认为这是每个 SAML 2.0 合
我是一名优秀的程序员,十分优秀!