PIN加密有3个要素,PIN-KEY,PIN,PAN。
PIN-KEY也就是加密的密钥,这里采用的3DES加密,所以PIN-KEY长度要么是16个字节要么是24个字节,也即是要么采用128位长密钥要么采用192长字节;PIN也就是要加密的明文,这里可能是账户密码,也可能是登录密码的明文;使用PIN加密,在加密之前,首先使用一串数字和PIN异或,然后将异或后的数据拿来进行3DES加密,这样加密出来的数据就是PIN加密结果。通常每次加密时采用的PAN不一样。当时解密的时候也需要取得该PAN进行解密。使用策略模式以方便以后扩展其他加密算法。对接口不满足的可适当通过Adapter调整
实现示例:
/**
*
@(#)EncryRule.java
1.0
2007
-
10
-
23
*/
package com.security;
/**
* 数据加密Strategy
*
* @author tsimgsong
* @version 1.0,2007-10-15
*
*/
public abstract class EncryRule {
/**
* 明文
*/
protected String plainText = "";
/**
* 密文
*/
protected String encryedText = "";
/**
* 取密文
* @return String 密文
*/
public String getEncryedText(){
return encryedText;
}
/**
* 设置密文
* @param encryedText 密文
*/
public void setEncryedText(String encryedText) {
this.encryedText = encryedText;
}
/**
* 取明文
* @return String 明文
*/
public String getPlainText(){
return plainText;
}
/**
* 设置明文
* @param plainText 明文
*/
public void setPlainText(String plainText){
this.plainText = plainText;
}
/**
* 加密操作
*
*/
public abstract void encry();
/**
* 解密操作
*
*/
public abstract void deEncry();
}
/**
*
@(#)PinEncry.java
1.0
2007