cms decrypt iv
1. 数字信封解封时使用数字信封中的 IV
2. 数字信封解封格式错误时抛出异常 IllegalArgumentException("数字信封解封格式错误")
This commit is contained in:
@@ -2617,6 +2617,11 @@ public class SydApi4j implements SydApi {
|
||||
|
||||
// 密文段
|
||||
ASN1Sequence seq5 = (ASN1Sequence) seq.getObjectAt( 2 ).toASN1Primitive();
|
||||
ASN1Sequence seq6 = (ASN1Sequence) seq5.getObjectAt(1).toASN1Primitive();
|
||||
|
||||
DEROctetString iv = (DEROctetString) seq6.getObjectAt(1).toASN1Primitive();
|
||||
ret.put("iv", iv.getOctets() );
|
||||
|
||||
ASN1TaggedObject tag = (ASN1TaggedObject) seq5.getObjectAt(2).toASN1Primitive();
|
||||
DEROctetString data = (DEROctetString) tag.getObject();
|
||||
ret.put("enData", data.getOctets() );
|
||||
@@ -2679,17 +2684,26 @@ public class SydApi4j implements SydApi {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
RetWrap ret = deCMSEnvelopedData( Util.decodeBase64( pCipherKey ) );
|
||||
RetWrap ret = null;
|
||||
|
||||
try {
|
||||
ret = deCMSEnvelopedData( Util.decodeBase64( pCipherKey ) );
|
||||
} catch ( Exception e) {
|
||||
throw new IllegalArgumentException("数字信封解封格式错误");
|
||||
}
|
||||
|
||||
byte[] sessionKeyDer = (byte[]) ret.get("sessionKeyDer");
|
||||
byte[] enData = (byte[]) ret.get("enData");
|
||||
|
||||
// 解密原文
|
||||
byte[] iv = (byte[]) ret.get("iv"); //new byte[32];
|
||||
// Arrays.fill(iv, (byte) 0x30);
|
||||
iv = Util.bytes2HexString( iv ).getBytes();
|
||||
|
||||
// 解密会话密钥
|
||||
ret = decryptDE(false, 1, dnBytes, Util.encodeBase64(sessionKeyDer) );
|
||||
String sessionKey = new String((byte[]) ret.get("SessionKey") );
|
||||
|
||||
// 解密原文
|
||||
byte[] iv = new byte[32];
|
||||
Arrays.fill(iv, (byte) 0x30);
|
||||
RetWrap retWrap = SYMEnDeData(false, 1, sessionKey, 1, 1, enData, iv, 0);
|
||||
byte[] data = (byte[]) retWrap.get("msg_all");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user