北邮java智能卡实验报告3des加解密_第1页
北邮java智能卡实验报告3des加解密_第2页
北邮java智能卡实验报告3des加解密_第3页
北邮java智能卡实验报告3des加解密_第4页
北邮java智能卡实验报告3des加解密_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、智能卡技术实验报告 学院: 电子工程学院班级: 2011211204姓名: 学号: 2011210986实验四 Java卡对称加密解密程序一、实验目的:建立Java卡3DES算法的加密解密程序,并进行Java卡程序的编译和调测。二、实验设备:PC机,智能卡读卡器,Java卡。三、实验内容:1. 建立一个JavaCard工程2. 编写3DES算法的加解密应用代码3. 使用智能卡模拟器对应用代码进行调试4. 使用Java卡对应用代码进行编译测试四、实验报告:1. 设计一个3DES算法的加密解密小应用程序2. 画出系统结构图和各部分程序流程图3. 完成程序的开发,然后再在Java卡上进行验证五、流程

2、图系统结构流程:各部分流程图1) 产生随机明文流程图2) 3DES加密流程图 3)3DES解密流程图六、演示模拟器随机产生8字节的明文:D4AA3503EC117A56,用时:1113us加密,密文:DCC74C5B43340FB7,用时:8445us解密,用时:6338us插卡产生明文:09FED7DA8FC3B90F,用时:83990us加密,产生密文:A447987D6FF5CC2C,用时:682482us解密,用时:641494us可以看出,插卡后比直接用模拟器,加密解密的时间长了很多。七、实验总结通过本次智能卡实验,我了解了对称加密的一些相关概念与知识,并学会了如何在智能卡上实现对称

3、加解密。八、源代码package desthree;import javacard.framework.*;import javacard.security.*;import javacardx.crypto.*;public class Desthree extends Appletbyte Random;byte ciphertext=new byte256;byte translation=new byte256;private DESKey deskey;Cipher CipherObj; private byte keyData1=0x01, 0x02, 0x03, 0x04, 0x

4、05, 0x06, 0x07, 0x08;/密钥private byte keyData2=0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18;private byte keyData3=0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28;protected Desthree()register();public static void install(byte bArray, short bOffset, byte bLength)new Desthree();public void process(APDU

5、 apdu)throws ISOExceptionbyte buffer = apdu.getBuffer();if(bufferISO7816.OFFSET_CLA)=0 && (bufferISO7816.OFFSET_INS)=(byte)(0xa4)return;if(bufferISO7816.OFFSET_INS=(byte)0x84)getRandom();/返回生成的8字节随机数Util.arrayCopyNonAtomic(Random, (short)0, buffer, (short)0, (short)8);apdu.setOutgoingAndSend

6、(short)0,(short)8);if(bufferISO7816.OFFSET_INS=(byte)0x83)apdu.setIncomingAndReceive();encrypt(buffer); /加密Util.arrayCopyNonAtomic(ciphertext, (short)16, buffer, (short)0, (short)8);apdu.setOutgoingAndSend(short)0,(short)8); if(bufferISO7816.OFFSET_INS=(byte)0x82)apdu.setIncomingAndReceive();doAuthe

7、ntication(buffer); /解密/执行加密过程的代码private void encrypt(byte buffer) deskey = (DESKey)KeyBuilder.buildKey(KeyBuilder.TYPE_DES,KeyBuilder.LENGTH_DES,false);deskey.setKey(keyData1, (short)0);CipherObj = Cipher.getInstance(Cipher.ALG_DES_CBC_ISO9797_M1, false);CipherObj.init(deskey, Cipher.MODE_ENCRYPT);C

8、ipherObj.doFinal(buffer, (short)5, (short)8, ciphertext, (short)0);deskey.setKey(keyData2, (short)0);CipherObj = Cipher.getInstance(Cipher.ALG_DES_CBC_ISO9797_M1, false);CipherObj.init(deskey, Cipher.MODE_DECRYPT);CipherObj.doFinal(ciphertext, (short)0, (short)8, ciphertext, (short)8);deskey.setKey(

9、keyData3, (short)0);CipherObj = Cipher.getInstance(Cipher.ALG_DES_CBC_ISO9797_M1, false);CipherObj.init(deskey, Cipher.MODE_ENCRYPT);CipherObj.doFinal(ciphertext, (short)8, (short)8, ciphertext, (short)16);/执行解密过程的代码private void doAuthentication(byte buffer)deskey = (DESKey)KeyBuilder.buildKey(KeyBu

10、ilder.TYPE_DES,KeyBuilder.LENGTH_DES,false);deskey.setKey(keyData3, (short)0);CipherObj = Cipher.getInstance(Cipher.ALG_DES_CBC_ISO9797_M1, false);CipherObj.init(deskey, Cipher.MODE_DECRYPT);CipherObj.doFinal(buffer, (short)5, (short)8, translation, (short)0);deskey.setKey(keyData2, (short)0);Cipher

11、Obj = Cipher.getInstance(Cipher.ALG_DES_CBC_ISO9797_M1, false);CipherObj.init(deskey, Cipher.MODE_ENCRYPT);CipherObj.doFinal(translation, (short)0, (short)8, translation, (short)8);deskey.setKey(keyData1, (short)0);CipherObj = Cipher.getInstance(Cipher.ALG_DES_CBC_ISO9797_M1, false);CipherObj.init(d

12、eskey, Cipher.MODE_DECRYPT);CipherObj.doFinal(translation, (short)8, (short)8, translation, (short)16);if(Util.arrayCompare(translation, (short)16, Random, (short)0, (short)8)!=0)ISOException.throwIt(ISO7816.SW_SECURITY_STATUS_NOT_SATISFIED);/获取随机数private void getRandom()if(Random=null)Random = JCSystem.makeTransientByteArray(short

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论