📄 testencrypteddataparser.java
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
// Source File Name: TestEncryptedDataParser.java
package jit.testsuit;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import jit.asn1.pkcs.PKCSObjectIdentifiers;
import jit.asn1.pkcs.pkcs7.*;
import jit.asn1.x509.SubjectPublicKeyInfo;
import jit.asn1parser.Parser;
import jit.asn1parser.pkcs.PKCS12Parser;
import jit.asn1parser.pkcs.pkcs7.EncryptedDataParser;
import jit.asn1parser.x509.SPKIParser;
import jit.asn1parser.x509.X509Cert;
import jit.jcrypto.*;
import jit.jcrypto.param.ECCParam;
import jit.jcrypto.param.RSAParam;
import jit.jcrypto.soft.JMechanism;
import jit.util.encoders.Base64;
import junit.framework.Assert;
import junit.framework.TestCase;
public class TestEncryptedDataParser extends TestCase
{
private EncryptedDataParser encryptedDataParser;
private Session session;
static final byte SOURCE[] = "加密数据包测试文件".getBytes();
public TestEncryptedDataParser(String name)
{
super(name);
encryptedDataParser = null;
}
protected void setUp()
throws Exception
{
super.setUp();
JCrypto jcrypto = new JCrypto();
jcrypto.initialize(0, null);
session = jcrypto.openSession(0);
encryptedDataParser = new EncryptedDataParser(session);
}
protected void tearDown()
throws Exception
{
encryptedDataParser = null;
session = null;
super.tearDown();
}
public void testEncryptedContentInfo_DES()
throws Exception
{
Mechanism mechanism = new JMechanism(288);
JKey key = session.generateKey(mechanism, 0);
EncryptedContentInfo encryptedContentInfo = encryptedDataParser.generateEncryptedContentInfo(PKCSObjectIdentifiers.desCBCEncryption, SOURCE, key);
byte decryptedData[] = encryptedDataParser.decryptEncryptedContentInfo(encryptedContentInfo, key);
Assert.assertTrue(isEqualArray(SOURCE, decryptedData));
encryptedContentInfo = encryptedDataParser.generateEncryptedContentInfo(PKCSObjectIdentifiers.desEncryption, SOURCE, key);
decryptedData = encryptedDataParser.decryptEncryptedContentInfo(encryptedContentInfo, key);
Assert.assertTrue(isEqualArray(SOURCE, decryptedData));
}
public void testEncryptedContentInfo_RC2()
throws Exception
{
Mechanism mechanism = new JMechanism(256);
JKey key = session.generateKey(mechanism, 0);
EncryptedContentInfo encryptedContentInfo = encryptedDataParser.generateEncryptedContentInfo(PKCSObjectIdentifiers.rc2CBCEncryption, SOURCE, key);
byte decryptedData[] = encryptedDataParser.decryptEncryptedContentInfo(encryptedContentInfo, key);
Assert.assertTrue(isEqualArray(SOURCE, decryptedData));
encryptedContentInfo = encryptedDataParser.generateEncryptedContentInfo(PKCSObjectIdentifiers.rc2Encryption, SOURCE, key);
decryptedData = encryptedDataParser.decryptEncryptedContentInfo(encryptedContentInfo, key);
Assert.assertTrue(isEqualArray(SOURCE, decryptedData));
}
public void testEncryptedContentInfo_3DES()
throws Exception
{
Mechanism mechanism = new JMechanism(305);
JKey key = session.generateKey(mechanism, 0);
EncryptedContentInfo encryptedContentInfo = encryptedDataParser.generateEncryptedContentInfo(PKCSObjectIdentifiers.des3CBCEncryption, SOURCE, key);
byte decryptedData[] = encryptedDataParser.decryptEncryptedContentInfo(encryptedContentInfo, key);
Assert.assertTrue(isEqualArray(SOURCE, decryptedData));
encryptedContentInfo = encryptedDataParser.generateEncryptedContentInfo(PKCSObjectIdentifiers.des3Encryption, SOURCE, key);
decryptedData = encryptedDataParser.decryptEncryptedContentInfo(encryptedContentInfo, key);
Assert.assertTrue(isEqualArray(SOURCE, decryptedData));
}
public void testEncryptedContentInfo_RSA()
throws Exception
{
RSAParam rsaParam = new RSAParam(512, 3);
Mechanism mechanism = new JMechanism(0, rsaParam);
JKey keys[] = session.generateKeyPair(mechanism);
JKey pubKey = keys[0];
JKey prvKey = keys[1];
EncryptedContentInfo encryptedContentInfo = encryptedDataParser.generateEncryptedContentInfo(PKCSObjectIdentifiers.rsaEncryption, SOURCE, pubKey);
byte decryptedData[] = encryptedDataParser.decryptEncryptedContentInfo(encryptedContentInfo, prvKey);
Assert.assertTrue(isEqualArray(SOURCE, decryptedData));
}
public void testEncryptedContentInfo_ECC()
throws Exception
{
ECCParam eccParam = new ECCParam(10001);
Mechanism mechanism = new JMechanism(1025, eccParam);
JKey keys[] = session.generateKeyPair(mechanism);
JKey pubKey = keys[0];
JKey prvKey = keys[1];
EncryptedContentInfo encryptedContentInfo = encryptedDataParser.generateEncryptedContentInfo(PKCSObjectIdentifiers.ecEncryption, SOURCE, pubKey);
byte decryptedData[] = encryptedDataParser.decryptEncryptedContentInfo(encryptedContentInfo, prvKey);
Assert.assertTrue(isEqualArray(SOURCE, decryptedData));
}
public void testEncryptedContentInfo_PBE_MD2_DESCBC()
throws Exception
{
Mechanism mechanism = new JMechanism(0x80000003);
JKey key = session.generatePBEKey(mechanism, "1234".getBytes());
EncryptedContentInfo encryptedContentInfo = encryptedDataParser.generateEncryptedContentInfo(PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, SOURCE, key);
byte decryptedData[] = encryptedDataParser.decryptEncryptedContentInfo(encryptedContentInfo, key);
Assert.assertTrue(isEqualArray(SOURCE, decryptedData));
}
public void testEncryptedContentInfo_PBE_MD5_DESCBC()
throws Exception
{
Mechanism mechanism = new JMechanism(0x80000002);
JKey key = session.generatePBEKey(mechanism, "2224456".getBytes());
EncryptedContentInfo encryptedContentInfo = encryptedDataParser.generateEncryptedContentInfo(PKCSObjectIdentifiers.pbeWithMD5AndDES_CBC, SOURCE, key);
byte decryptedData[] = encryptedDataParser.decryptEncryptedContentInfo(encryptedContentInfo, key);
Assert.assertTrue(isEqualArray(SOURCE, decryptedData));
}
public void testEncryptedContentInfo_PBE_SHA1_DESCBC()
throws Exception
{
Mechanism mechanism = new JMechanism(0x80000004);
JKey key = session.generatePBEKey(mechanism, "24456001".getBytes());
EncryptedContentInfo encryptedContentInfo = encryptedDataParser.generateEncryptedContentInfo(PKCSObjectIdentifiers.pbeWithSHA1AndDES_CBC, SOURCE, key);
byte decryptedData[] = encryptedDataParser.decryptEncryptedContentInfo(encryptedContentInfo, key);
Assert.assertTrue(isEqualArray(SOURCE, decryptedData));
}
public void testEncryptedContentInfo_PBE_MD2_RC2CBC()
throws Exception
{
Mechanism mechanism = new JMechanism(0x80000003);
JKey key = session.generatePBEKey(mechanism, "222434343456".getBytes());
EncryptedContentInfo encryptedContentInfo = encryptedDataParser.generateEncryptedContentInfo(PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, SOURCE, key);
byte decryptedData[] = encryptedDataParser.decryptEncryptedContentInfo(encryptedContentInfo, key);
Assert.assertTrue(isEqualArray(SOURCE, decryptedData));
}
public void testEncryptedContentInfo_PBE_MD5_RC2CBC()
throws Exception
{
Mechanism mechanism = new JMechanism(0x80000002);
JKey key = session.generatePBEKey(mechanism, "2".getBytes());
EncryptedContentInfo encryptedContentInfo = encryptedDataParser.generateEncryptedContentInfo(PKCSObjectIdentifiers.pbeWithMD5AndRC2_CBC, SOURCE, key);
byte decryptedData[] = encryptedDataParser.decryptEncryptedContentInfo(encryptedContentInfo, key);
Assert.assertTrue(isEqualArray(SOURCE, decryptedData));
}
public void testEncryptedContentInfo_PBE_SHA1_RC2CBC()
throws Exception
{
Mechanism mechanism = new JMechanism(0x80000002);
JKey key = session.generatePBEKey(mechanism, "2000000001".getBytes());
EncryptedContentInfo encryptedContentInfo = encryptedDataParser.generateEncryptedContentInfo(PKCSObjectIdentifiers.pbeWithSHA1AndRC2_CBC, SOURCE, key);
byte decryptedData[] = encryptedDataParser.decryptEncryptedContentInfo(encryptedContentInfo, key);
Assert.assertTrue(isEqualArray(SOURCE, decryptedData));
}
public void testGenerateFile()
throws Exception
{
PKCS12Parser p12 = new PKCS12Parser();
p12.load("c:/testData/lijian.pfx");
p12.decrypt("1".toCharArray());
JKey prvKey = p12.getPrivateKey();
X509Cert pubCert = new X509Cert("c:/testData/lijian.cer");
SubjectPublicKeyInfo spki = pubCert.getSubjectPublicKeyInfo();
SPKIParser spkiParser = new SPKIParser();
JKey pubKey = spkiParser.getPublicKey(spki);
EncryptedContentInfo eci = encryptedDataParser.generateEncryptedContentInfo(PKCSObjectIdentifiers.rsaEncryption, SOURCE, pubKey);
EncryptedData encryptedData = encryptedDataParser.generateEncryptedData(eci);
byte decryptedData[] = encryptedDataParser.decryptEncryptedData(encryptedData, prvKey);
Assert.assertTrue(isEqualArray(SOURCE, decryptedData));
ContentInfo contentInfo = encryptedDataParser.generateEncryptedDataContent(encryptedData);
byte data[] = Parser.writeDERObj2Bytes(contentInfo.getDERObject());
data = Base64.encode(data);
data = format64(data);
FileOutputStream fos = new FileOutputStream("c:/encryptedData_rsa.txt.jef");
fos.write(data);
fos.close();
}
private boolean isEqualArray(byte a[], byte b[])
{
if(a.length != b.length)
return false;
for(int i = 0; i < a.length; i++)
if(a[i] != b[i])
return false;
return true;
}
private byte[] format64(byte base64Data[])
throws Exception
{
ByteArrayOutputStream bos = new ByteArrayOutputStream();
for(int i = 0; i < base64Data.length; i++)
{
if(i != 0 && i % 64 == 0)
bos.write("\n".getBytes());
bos.write(base64Data[i]);
}
return bos.toByteArray();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -