package com.citi.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.Signature;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import org.bouncycastle.cms.CMSEnvelopedData;
import org.bouncycastle.cms.CMSEnvelopedDataGenerator;
import org.bouncycastle.cms.CMSException;
import org.bouncycastle.cms.CMSProcessable;
import org.bouncycastle.cms.CMSProcessableByteArray;
import org.bouncycastle.cms.CMSSignedData;
import org.bouncycastle.cms.CMSSignedDataGenerator;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class Crypto {
private File keystoreFile;
private String keyStoreType;
private char[] password;
private String alias;
private static final Crypto instance = new Crypto();
public static Crypto getInstance() {
return instance;
}
public Crypto(){
if(readPath("C:\\ibm\\WebSphere\\profiles\\GBGCB\\installedApps\\APACCNSHZJW1373Node01Cell\\GBGCB.ear\\GBGCB.war\\WEB-INF\\etc").endsWith("/")){
keystoreFile=new File(readPath("C:\\ibm\\WebSphere\\profiles\\GBGCB\\installedApps\\APACCNSHZJW1373Node01Cell\\GBGCB.ear\\GBGCB.war\\WEB-INF\\etc")+readPath("keystore.jks"));
}else{
keystoreFile=new File(readPath("C:\\ibm\\WebSphere\\profiles\\GBGCB\\installedApps\\APACCNSHZJW1373Node01Cell\\GBGCB.ear\\GBGCB.war\\WEB-INF\\etc")+"/"+readPath("keystore.jks"));
}
keyStoreType=readPath("JKS");
BASE64Decoder decoder = new BASE64Decoder();
String passwordStr ="";
try {
passwordStr=new String(decoder.decodeBuffer("Q2l0aWJhbmswMQ=="));
} catch (IOException e) {
}
password=passwordStr.toCharArray();
alias=readPath("outkey");
}
public static String getSignature(byte []data){
X509Certificate senderPubCert =null;
PrivateKey senderPriKey =null;
String certpath =null;
try{
BASE64Encoder m_EncoderBase64 = new BASE64Encoder();
java.security.Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
if ((data == null) || (data.length == 0)) {
return null;
}
certpath = new Crypto().readPath("C:\\ibm\\WebSphere\\profiles\\GBGCB\\installedApps\\APACCNSHZJW1373Node01Cell\\GBGCB.ear\\GBGCB.war\\WEB-INF\\etc");
// Get Vendor Public Cert
/***** Get Sender Certificate ****/
Crypto export=new Crypto();
HashMap strMap = export.export();
if(strMap != null){
senderPriKey = (PrivateKey) strMap.get("0");
senderPubCert= (X509Certificate) strMap.get("1");
}
byte[] signedData = null;
if (senderPriKey != null && senderPubCert != null) {
Signature rsa = Signature.getInstance("SHA1withRSA", "BC");
rsa.initSign(senderPriKey);
rsa.update(data);
signedData = rsa.sign();
}
else {
// signedData = encryptedData;
return null;
}
// perform Base64 encoding
String sBase64Encoded = m_EncoderBase64.encode(signedData);
sBase64Encoded = sBase64Encoded.replaceAll("\\r", "").replaceAll("\\n", "");
return sBase64Encoded;
}
catch (CMSException cmsex) {
cmsex.printStackTrace();
}
catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
public static String encryptAndSignData(byte[] data) {
String sGeneratorType = "RC2_CBC";
X509Certificate senderPubCert =null;
PrivateKey senderPriKey =null;
String certpath =null;
String vendorcertificate=null;
try{
boolean init = false;
String CRYPTO_PROVIDER_NAME ="BC";
BASE64Encoder m_EncoderBase64 = new BASE64Encoder();
// Check if we got not-null parameters
if (!init){
java.security.Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
init = true;
}
if ((data == null) || (data.length == 0)) {
return null;
}
certpath = new Crypto().readPath("C:\\ibm\\WebSphere\\profiles\\GBGCB\\installedApps\\APACCNSHZJW1373Node01Cell\\GBGCB.ear\\GBGCB.war\\WEB-INF\\etc");
vendorcertificate = new Crypto().readPath("vendorcertificate");
vendorcertificate = "LPSSO.cer";
// Get Vendor Public Cert
FileInputStream fi=null;
if(certpath.endsWith("/")){
fi = new FileInputStream(certpath+vendorcertificate);
}else{
fi = new FileInputStream(certpath+"/"+vendorcertificate);
}
CertificateFactory certFact = CertificateFactory.getInstance("X.509", "BC");
X509Certificate recipientPubCert= (X509Certificate)certFact.generateCertificate(fi);
if (recipientPubCert == null) {
return null;
}
/***** Get Sender Certificate ****/
Crypto export=new Crypto();
HashMap strMap = export.export();
if(strMap != null){
senderPriKey = (PrivateKey) strMap.get("0");
senderPubCert= (X509Certificate) strMap.get("1");
}
//***** End of Get Sender Certificate ****//*
CMSEnvelopedDataGenerator edGen = new CMSEnvelopedDataGenerator();
// add the recipient's public key
edGen.addKeyTransRecipient(recipientPubCert);
// generate the enveloped-data object
CMSProcessable procData = new CMSProcessableByteArray(data);
sGeneratorType = CMSEnvelopedDataGenerator.RC2_CBC;
CMSEnvelopedData envelopedData = edGen.generate(procData, sGeneratorType, CRYPTO_PROVIDER_NAME);
byte[] encryptedData = envelopedData.getEncoded();
// sign the enveloped data
byte[] signedData = null;
if (senderPriKey != null && senderPubCert != null) {
CMSSignedDataGenerator signer = new CMSSignedDataGenerator();
signer.addSigner(senderPriKey, senderPubCert, CMSSignedDataGenerator.DIGEST_SHA1);
CMSSignedData cmsSignedData = signer.generate(new CMSProcessableByteArray(encryptedData), true, CRYPTO_PROVIDER_NAME);
}
else {
// signedData = encryptedData;
return null;
}
// perform Base64 encoding
String sBase64Encoded = m_EncoderBase64.encode(signedData);
sBase64Encoded = sBase64Encoded.replaceAll("\r\n", "");
return sBase64Encoded;
}
catch (CMSException cmsex) {
cmsex.printStackTrace();
}
catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
public HashMap export() throws Exception{
HashMap strmap = new HashMap();
KeyStore keystore=KeyStore.getInstance(keyStoreType);
keystore.load(new FileInputStream(keystoreFile),password);
PrivateKey senderPK = (PrivateKey)keystore.getKey(alias,password);
X509Certificate certificate =(X509Certificate) keystore.getCertificate(alias);
strmap.put("0",senderPK);
strmap.put("1",certificate);
return strmap;
}
public String readPath(String pathname){
java.util.Properties properties = new java.util.Properties();
String certpath = null;
try {
certpath = pathname;
}catch (Exception ex) {
ex.printStackTrace();
}
return certpath;
}
public static void main(String[] args){
System.out.println("test");
String GRBNumber="004195137";
String PageID="HomePage";
String Initial_Request_timestamp=String.valueOf(System.currentTimeMillis());
String ICHANNEL_ID="Default";
String postData = "GRBNumber="+GRBNumber+"&PageID="+PageID+"&Initial_Request_timestamp="+Initial_Request_timestamp+"&ICHANNEL_ID="+ICHANNEL_ID;
System.out.println(postData);
String value = Crypto.getSignature(postData.getBytes());
System.out.println(value);
}
}
分享到:
相关推荐
用servlet,对称加密实现的单点登录! 可以跨域,不使用cookies的! 初步代码! laiqinyi#at#gmail.com
17.3.3 创建新的SSO加密密钥 385 17.3.4 创建企业应用程序定义 386 17.3.5 设置应用程序定义的密码 387 17.3.6 将BDC应用程序定义修改为使用SSO 387 17.4 配置业务数据搜索 388 17.4.1 添加内容源 388 17.4.2 映射元...
说明文档---基于对称加密的简单单点登录系统sso-NET-csharp版本 比较详细了.呵呵 laiqinyi #at# gmail #dot# com 上面是邮件地址..欢迎交流
用ashx技术,对称加密DES算法实现的单点登录! 可以跨域,不使用cookies的! 初步代码! laiqinyi#at#gmail.com
在执行某些任务(例如,发布评论)之前需要身份验证时,SSO客户端将加密当前请求数据($ _GET,$ _ POST等)并将其发送到SSO服务器以供以后检索,并将精确地恢复到它离开的位置在大多数情况下都关闭(例如,发表...
# sso-shiro-cas spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次 ## 系统模块说明 1. cas: 单点登录模块,这里直接拿的是cas的项目改了点样式而已 2. doc: 文档目录,里面有数据库...
项目所涉及的知识点包括加密、数字证书、数字签名、SSL、SSO等
统一身份认证-CAS配置实现 SSO单点登录Spring-Security+&+CAS+使用手册 统一身份认证-CAS配置实现 CAS登录验证(密码MD5、SHA加密后_再进行Base64加密实现代码)_与Liferay的用户身份验证对应
sso php sso 用php设计的认证中心 认证流程 用户打开任意网站→点击登录→将登录请求发送到认证中心(带上该页面的完整url地址) ↓认证中心接到登录请求: 展示登录页面(自己设计)→用户输入账号密码→点击登录→...
基于SAML 2.0 SSO单点登录,包括VS2005,VS2008,VS2010。...client发送saml请求---sso响应验证client是否可信任---可信响应saml----加密saml---发送到client---client解密成功--验证信息是否有效----有效----登录成功
此机密绝不能与服务器和客户端以外的任何人共享,并且不得未经加密地传输。 工作流程 用户希望通过单击“登录”按钮登录到客户端。 可以使用next GET参数传递最初请求的URL。 客户端的Python代码向服务器发出HTTP...
因文件太大,只保留了最重要的三个jar包,请先到官网下载服务端的war包,解压后将lib目录下的jar包导入到sso中的lib目录下,注意:sso中的jar包是必须的,不可替换。然后直接部署到tomcat下即可运行。
第二种方式,也很简单,就是将所以应用的认证地址更换成同一个认证地址,每次查看是否在认证中心登陆,如果登陆了,给调用应用发放一个加密令牌即可 第三种跨域,就是来回跳转来回验证token略有麻烦 配置目录结构 在...
该脚本( lc-sso.php )允许直接从LiveConfig登录到phpMyAdmin,而无需输入数据库凭据。 为了避免通过用户的浏览器提交不安全的内容,此脚本会将它们传输到服务器端。 因此,用户也看不到当前配置的数据库密码。 ...
关键字:appKey appSecret token(令牌) 2.SSO授权 如果本地手机装有微博客户端,则直接跳转到微博客户端,只需点击授权按钮,就可以登陆了 qq第三方登陆使用Oauth2.0实现,测试代码 点击下面的连接 ...
SAASPASS浏览器扩展程序可以自动填充您的密码和验证码,从而实现顺畅的无缝体验和单点登录SSO。 不需要带有SAASPASS浏览器扩展程序的桌面应用程序。 默认情况下,浏览器扩展受两因素身份验证的保护,并包括无密码2FA...
Hypersocket SSO服务器提供单一登录到所有您最喜爱的本地或云中的网络应用程序。只需安装https://www.hypersocket.com提供的服务器及其关联的扩展/插件,从我们支持的数千个模板中添加您的站点,而不必再输入您的...
语言:English,español 单点登录扩展 Hypersocket SSO服务器提供对所有您喜欢的本地或云内Web应用程序的单点...Hypersocket SSO服务器使用强大的加密技术来保护您的数据安全,并且在本地部署意味着您可以完全控制数据。
加密认证 打印机加密 WIFI认证部署 认证服务器搭建
介绍 随着越来越多的机构和组织提供在线服务和协作,员工需要访问本地和基于云的应用程序来完成日常工作。... SAML断言具有有限的有效期,包含唯一标识符,经过数字签名,并可选择加密。 如果断言在其有效期内仍然有