前端签名与加密流程图和代码记载_java

	<script language="javascript">
		
		// 获取证书 ,初始化选择证书列表
var certs;
function refreshCertList() {
  try {
    certs = CertStore.listAllCerts();
	//清空下拉列表
	this.SignForm.CertList.length = 0;
		//遍历证书集合
		for ( var i = 0; i < certs.size(); i++){
			 //获取一张证书
			 var cert = certs.get(i);
			 //获取证书cn值
			 var cn = getCNFromSubject(cert);
			 //获取证书序列号
			 this.SignForm.CertList.options.add(new Option(
					cn,cert.serialNumber()));
	      }
  } catch (e) {
    if (e instanceof TCACErr) {
	//TCA异常封装
      alert(e.toStr());
    } else {
	//其它异常放行..
      alert("Here is Error !!!");
    }
  }
}

//最终加密文件
function clientSign(){
   //判断待加密文件是否存在
   if(this.SignForm.SrcFileName.value==""){
      this.SignForm.SrcFileName.focus();
      alert("请选择加密文件");
   }
   //设置签名加密文件路径
   	var destFileName = SignForm.SrcFileName.value+'.sig';
	var enFileName = destFileName+'.enc';
	//获取个人用签名证书
	var cert =getSelectedCert();	
    //获取签名值
	var signresult1 = cert.signFile2File(SignForm.SrcFileName.value,destFileName, "SHA1");
	//根据序列号,获取数字信封使用证书
	var certencs =certs.bySerialnumber("1D4DB312246B94B2E79C87B5239AD7D469100B5E");
	var certenc=certencs.get(0);
	//获取数字信封结果
    var encresult1 = certenc.encryptFile2File(destFileName,enFileName);
	//对数字信封进行签名
	var signFileName2=enFileName+".sig";
	var signresult2=cert.signFile2File(enFileName,signFileName2, "SHA1");
	if(signresult2){
	    alert("上传成功!");
	}
}


   //根据序列号获取当前选择的证书
   //返回Certificate对象
function getSelectedCert() {
  try {
    var selectedCertSN = this.SignForm.CertList.value;
    var cs = certs.bySerialnumber(selectedCertSN);
    return cs.get(0);
  } catch (e) {
    if (e instanceof TCACErr) {
      alert(e.toStr());
    } else {
      alert("没有找到证书");
    }
  }
}

// 从Certificate对象中获取CN值
// cert : Certificate对象
function getCNFromSubject(cert) {
  try {
    var t = cert.subject().match(/(S(?!N)|L|O(?!U)|OU|SN|CN|E)=([^=]+)(?=, |$)/g);
    for (var i = 0; i < t.length; i++) {
      if (t[i].indexOf("CN=") === 0)
        return t[i].substr(3, t[i].length);
      }
      return null;
  } catch (e) {
    if (e instanceof TCACErr) {
      alert(e.toStr());
    } else {
      alert("Here is Error !!!");
    }
  }
}
		</script>
	
	
	<script type="text/javascript">


$(document).ready(function () {
//加载控制值
 $('.date-pick').datePicker({clickInput:true});
 //加载license值
   var config = {
  	"license": "MIIFTwYJKoZIhvcNAQcCoIIFQDCCBTwCAQExDjAMBggqgRzPVQGDEQUAMIGVBgkqhkiG9w0BBwGggYcEgYR7Iklzc3VlciI6Ii4qTz0uKuWkqeivmuWuieS/oeivleeUqC4qIiwidmVyc2lvbiI6IjEuMC4wLjAiLCJzb2Z0VmVyc2lvbiI6IjMuMS4wLjAiLCJub3RhZnRlciI6IjIwMTYtMDEtMTQiLCJub3RiZWZvcmUiOiIyMDE1LTAxLTEyIn2gggNEMIIDQDCCAuWgAwIBAgIUXyWc2syCu37zBbMAe4uOyb35tfIwDAYIKoEcz1UBg3UFADBVMSYwJAYDVQQDDB3lpKnor5rlronkv6HmtYvor5VTTTLnlKjmiLdDQTEOMAwGA1UECwwFVE9QQ0ExDjAMBgNVBAoMBVRPUENBMQswCQYDVQQGEwJDTjAeFw0xNDA5MjYwNzQ2MDhaFw0xNTA5MjYwNzQ2MDhaMDExGDAWBgNVBAMMD1NpZ25FU0EyMDE0MDkyNzEVMBMGA1UECgwM5aSp6K+a5a6J5L+hMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAElhZ4UuYjL2ZO535qLQsF4ujGGCc7odxAZuxCGXh+94nOhXHQLLO3/G9ZjnLuXeoDB3n0Bsj4iboW2X/AA5KFiaOCAbMwggGvMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgbAMIGKBggrBgEFBQcBAQR+MHwwegYIKwYBBQUHMAKGbmh0dHA6Ly9Zb3VyX1NlcnZlcl9OYW1lOlBvcnQvVG9wQ0EvdXNlckVucm9sbC9jYUNlcnQ/Y2VydFNlcmlhbE51bWJlcj01QTQ3RUNGMTA1ODA0QTVDNkE1QjIyOTI5Qjc1REYwREZCQzBENzk2MFcGA1UdLgRQME4wTKBKoEiGRlBvcnQvVG9wQ0EvcHVibGljL2l0cnVzY3JsP0NBPTVBNDdFQ0YxMDU4MDRBNUM2QTVCMjI5MjlCNzVERjBERkJDMEQ3OTYwbwYDVR0fBGgwZjBkoGKgYIZeaHR0cDovL1lvdXJfU2VydmVyX05hbWU6UG9ydC9Ub3BDQS9wdWJsaWMvaXRydXNjcmw/Q0E9NUE0N0VDRjEwNTgwNEE1QzZBNUIyMjkyOUI3NURGMERGQkMwRDc5NjAfBgNVHSMEGDAWgBQ9icZHy3GFsNk71kiwidnn/u/a2TAdBgNVHQ4EFgQUSzvtf4eChoegEpKxLuYAJdi1EQAwDAYIKoEcz1UBg3UFAANHADBEAiC9tNcXzI0fmOxsbqvtcvksS6kl3yXzH1qTPyuE7ldhggIg6D6HGfkXjg3n7Bqob7UNuzqb3GIgPzdWQeeam10yhHsxggFFMIIBQQIBATBtMFUxJjAkBgNVBAMMHeWkqeivmuWuieS/oea1i+ivlVNNMueUqOaIt0NBMQ4wDAYDVQQLDAVUT1BDQTEOMAwGA1UECgwFVE9QQ0ExCzAJBgNVBAYTAkNOAhRfJZzazIK7fvMFswB7i47Jvfm18jAMBggqgRzPVQGDEQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTUwMTEzMTIxMDUwWjAvBgkqhkiG9w0BCQQxIgQgTsHg6rBYG+pioDkYWoKf6xGtsTCRNLMIQXksoRhMkO4wDAYIKoEcz1UBgi0FAARGMEQCIHZPgdw5RZq9XwGdzdc3lKrKrb+xSStLmUWNylP+c7lbAiC7+wkPFWBlMJlTB4gehrgY+kJH19vq7n2ohVqCNHE2MQ==","certDateFmtMode":true,"certDateFmtMode":true};
  //测试用

//异常捕捉
  try{
    TCA.config(config);
	refreshCertList();
    return ;
  }catch(e){
    if (e instanceof TCACErr) {
      alert(e.toStr());
    } else {
      alert("Here is Error !!!");
    }
  }

});
</script>
	
	
	
	
	
	
	<script language="javascript">
		

// 获取证书 ,初始化选择证书列表
var certs;
function refreshCertList() {
  try {
    certs = CertStore.listAllCerts();
	//清空下拉列表
	this.SignForm.CertList.length = 0;
		//遍历证书集合
		for ( var i = 0; i < certs.size(); i++){
			 //获取一张证书
			 var cert = certs.get(i);
			 //获取证书cn值
			 var cn = getCNFromSubject(cert);
			 //获取证书序列号
			 this.SignForm.CertList.options.add(new Option(
					cn,cert.serialNumber()));
	      }
  } catch (e) {
    if (e instanceof TCACErr) {
	//TCA异常封装
      alert(e.toStr());
    } else {
	//其它异常放行..
      alert("Here is Error !!!");
    }
  }
}

//签名方法

  function plaintextSign(){
  var toSign = this.SignForm.plainText.value;
  var cert=getSelectedCert();
  var ic_value =this.SignForm.InnerContent.checked;
  var pt8_value =this.SignForm.PlainTextUTF8.checked;
  var mcs_value =this.SignForm.MinCertStore.checked;
  
  var p7=null;
  alert(getCNFromSubject(cert));

    if(ic_value == false){
      p7 = cert.signMessage(toSign,false);
    }else{
      p7 = cert.signMessage(toSign);
    }
	this.SignForm.signature.value=p7;
  }
  
 
 //加密方法
  function plaintextEncrypt(){
  //获取数字信封公钥
  try{
  var cert = certs.bySerialnumber("1D4DB312246B94B2E79C87B5239AD7D469100B5E");
  var toEnc=this.SignForm.plainText.value;
  var p7 = cert.get(0).encryptMessage(toEnc);
  this.SignForm.encryptData.value=p7;
    }catch(e){
	    
	if (e instanceof TCACErr) {
      alert(e.toStr());
    } else {
      alert("Here is Error !!!");
    }
 }
}

//数字信封签名方法

function enSign(){
if(this.SignForm.encryptData.value==""){
				alert("请输入加密信息!");
				SignForm.encryptData.focus();
				return;
}


 var toSign = this.SignForm.encryptData.value;
  var cert=getSelectedCert();
  
  var ic_value =this.SignForm.InnerContent.checked;
  var pt8_value =this.SignForm.PlainTextUTF8.checked;
  var mcs_value =this.SignForm.MinCertStore.checked;
  
  try{
  
  
    var p7=null;
  alert(getCNFromSubject(cert));

    if(ic_value == false){
      p7 = cert.signMessage(toSign,false);
    }else{
      p7 = cert.signMessage(toSign);
    }
	this.SignForm.enSignatrue.value=p7;
  

  
  }catch(e){
  
  
  	if (e instanceof TCACErr) {
      alert(e.toStr());
    } else {
      alert("Here is Error !!!");
    }
  
  }
}
 
   //根据序列号获取当前选择的证书
   //返回Certificate对象
function getSelectedCert() {
  try {
    var selectedCertSN = this.SignForm.CertList.value;
    var cs = certs.bySerialnumber(selectedCertSN);
    return cs.get(0);
  } catch (e) {
    if (e instanceof TCACErr) {
      alert(e.toStr());
    } else {
      alert("没有找到证书");
    }
  }
}



// 从Certificate对象中获取CN值
// cert : Certificate对象
function getCNFromSubject(cert) {
  try {
    var t = cert.subject().match(/(S(?!N)|L|O(?!U)|OU|SN|CN|E)=([^=]+)(?=, |$)/g);
    for (var i = 0; i < t.length; i++) {
      if (t[i].indexOf("CN=") === 0)
        return t[i].substr(3, t[i].length);
      }
      return null;
  } catch (e) {
    if (e instanceof TCACErr) {
      alert(e.toStr());
    } else {
      alert("Here is Error !!!");
    }
  }
}
</script>