⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xxytest.txt

📁 信息安全
💻 TXT
字号:
import com.boyter.mscrypto.MSCryptoFunctions;
import java.io.ByteArrayInputStream;
import java.security.cert.X509Certificate;
import java.security.cert.CertificateFactory;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.File;
import javax.crypto.Cipher;
import java.security.Signature;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.X509KeyManager;
import java.security.PrivateKey;
import com.boyter.mscrypto.MSKeyMgrProvider;
import com.boyter.mscrypto.MSTrustMgrProvider;
import com.boyter.mscrypto.MSRSASignProvider;
import com.boyter.mscrypto.MSRSACipherProvider;
import com.boyter.mscrypto.MSValidCertificate; 

public class XxyTest
{
 static MSCryptoFunctions MSF = new MSCryptoFunctions();
 public static void main(String[] args){
  if(args[0].equals("list")){
   try{
    String[] aliases = MSF.MSgetAliases("My");
    System.out.println("下面是windows证书库中所有证书:");
    for(int i=0;i<aliases.length;i++)
    {
    //String alias = "{6014510D-21EF-4F49-8D93-0F19B821C0A0}";
    String alias =aliases[i];
    // get the cert for this alias
    byte[] certblob = MSF.MSgetCert("My", alias);
    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    ByteArrayInputStream input = new ByteArrayInputStream(certblob);
    X509Certificate cert = (X509Certificate) cf.generateCertificate(input);
    input.close(); 
    System.out.println(cert.getSubjectDN().getName());
    }
   }catch(Exception e){
    e.printStackTrace();
   }
  }

  if(args[0].equals("encrypt")){
   try{
    System.out.println("加密测试, 

*~络3Cn-aV的2专i的1
对c:\\a.txt加密,加密后生成c:\\a_enc.txt");
    MSTrustMgrProvider.install();
    MSKeyMgrProvider.install();
    MSRSACipherProvider.install();
    MSRSASignProvider.install();
    //get public key
    String[] aliases = MSF.MSgetAliases("My");
    String alias =aliases[0];
    byte[] certblob = MSF.MSgetCert("My", alias);
    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    ByteArrayInputStream input = new ByteArrayInputStream(certblob);
    X509Certificate cert = (X509Certificate) cf.generateCertificate(input);
    input.close(); 
    //init
    Cipher rc = Cipher.getInstance("RSA/ECB/PKCS1Padding","MSRSACipher");
    System.out.println("using provider: " + rc.getProvider().getName()); 

    rc.init( Cipher.ENCRYPT_MODE, cert.getPublicKey());

    String PaddingAlgorithm = "PKCS1";
    byte[] outputData=null;
    byte[] inputData=new byte[(new Long((new File("c:\\a.txt")).length())).intValue()];
    FileInputStream fis=new java.io.FileInputStream("c:\\a.txt");
    fis.read(inputData);
    fis.close();
    outputData = rc.doFinal(inputData);
    FileOutputStream fos=new FileOutputStream("c:\\a_enc.txt");
    fos.write(outputData);
    fos.close();
   }catch(Exception e){
    e.printStackTrace();
   }
  }

  if(args[0].equals("decrypt")){
   try{
    System.out.println("解密测试, 

-_I3.s4T专H
对c:\\a_enc.txt解密,解密后生成c:\\a_dec.txt");
    MSTrustMgrProvider.install();
    MSKeyMgrProvider.install();
    MSRSACipherProvider.install();
    MSRSASignProvider.install();
    //get public key
    String[] aliases = MSF.MSgetAliases("My");
    String alias =aliases[0];
    byte[] certblob = MSF.MSgetCert("My", alias);
    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    ByteArrayInputStream input = new ByteArrayInputStream(certblob);
    X509Certificate cert = (X509Certificate) cf.generateCertificate(input);
    input.close(); 
    //init
    Cipher rc = Cipher.getInstance("RSA/ECB/PKCS1Padding","MSRSACipher");
    System.out.println("using provider: " + rc.getProvider().getName()); 

    rc.init( Cipher.DECRYPT_MODE, cert.getPublicKey());

    String PaddingAlgorithm = "PKCS1";
    byte[] outputData=null;
    byte[] inputData=new byte[(new Long((new File("c:\\a_enc.txt")).length())).intValue()];
    FileInputStream fis=new java.io.FileInputStream("c:\\a_enc.txt");
    fis.read(inputData);
    fis.close();
    outputData = rc.doFinal(inputData);
    FileOutputStream fos=new FileOutputStream("c:\\a_dec.txt");
    fos.write(outputData);
    fos.close();
   }catch(Exception e){
    e.printStackTrace();
   }
  }

  if(args[0].equals("sign")){
   try{
    System.out.println("签名测试,网C=的)*KphK网国 

育n件;W,1ZL0;f育

对c:\\a.txt签名,签名后生成c:\\a_sign.txt");
    MSTrustMgrProvider.install();
    MSKeyMgrProvider.install();
    MSRSACipherProvider.install();
    MSRSASignProvider.install();
    //get public key
    String[] aliases = MSF.MSgetAliases("My");
    String alias =aliases[0]; 
    //init
    KeyManagerFactory kmf = KeyManagerFactory.getInstance("MSKMF");
    kmf.init(null, null);
    X509KeyManager xkm = (X509KeyManager)kmf.getKeyManagers()[0];
    PrivateKey privkey = xkm.getPrivateKey(alias);
    Signature rsa = Signature.getInstance("MD5withRSA");
    rsa.initSign(privkey);
    
    byte[] outputData=null;
    byte[] inputData=new byte[(new Long((new File("c:\\a.txt")).length())).intValue()];
    FileInputStream fis=new java.io.FileInputStream("c:\\a.txt");
    fis.read(inputData);
    fis.close();
    rsa.update(inputData);
    outputData = rsa.sign();
    FileOutputStream fos=new FileOutputStream("c:\\a_sign.txt");
    fos.write(outputData);
    fos.close();
   }catch(Exception e){
    e.printStackTrace();
   }
  } 

  if(args[0].equals("verify")){
   try{
    System.out.println("验证签名测试,国的Rr育管x@Z8w对c:\\a.txt验证签名,验证签名后生成c:\\a_verify.txt");
    MSTrustMgrProvider.install();
    MSKeyMgrProvider.install();
    MSRSACipherProvider.install();
    MSRSASignProvider.install();
    //get public key
    String[] aliases = MSF.MSgetAliases("My");
    String alias =aliases[0];
    byte[] certblob = MSF.MSgetCert("My", alias);
    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    ByteArrayInputStream input = new ByteArrayInputStream(certblob);
    X509Certificate cert = (X509Certificate) cf.generateCertificate(input);
    input.close();


    Signature rsa = Signature.getInstance("MD5withRSA");
    rsa.initVerify(cert.getPublicKey());
    
    
    byte[] inputData=new byte[(new Long((new File("c:\\a.txt")).length())).intValue()];
    FileInputStream fis=new java.io.FileInputStream("c:\\a.txt");
    fis.read(inputData);
    fis.close();
    rsa.update(inputData);
    
    byte[] sign=new byte[(new Long((new File("c:\\a_sign.txt")).length())).intValue()];
    FileInputStream fis2=new java.io.FileInputStream("c:\\a_sign.txt");
    fis2.read(sign);

    if(rsa.verify(sign)){
     System.out.println("验证通过");
    }else{
     System.out.println("验证不通过");
    }
    fis2.close();
   }catch(Exception e){
    e.printStackTrace();
   }
  }
 }
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -