银行PIN数据加密

本文介绍了一种使用3DES加密技术对PIN码进行保护的方法。PIN-KEY、PIN和PAN是加密过程中的关键要素。通过异或操作和3DES加密确保数据安全。还展示了PINEncry类的实现,包括加密和解密方法,以及如何使用EncrySolve策略类进行操作。在Junit测试中验证了加密和解密的正确性。
摘要由CSDN通过智能技术生成
 
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值