永发信息网

如何保存密钥文件更安全

答案:2  悬赏:40  手机版
解决时间 2021-03-07 05:20
如何保存密钥文件更安全
最佳答案
下面是一个进行加密的工具类,加密类会产生一个密钥文件,密钥文件保存到了硬盘文件中,程序中要进行对数据的加解密操作。密钥文件保存在文件,别人也就可以读取密钥文件,获得加密数据的内容。publicclass EncryptUtil { privatestatic String keyPath = null; privatestatic String getKeyPath() { keyPath = "c:\\yhb.des"; return keyPath; } publicstaticvoid generatorKey() { SecretKey key = null; try { // 指定算法,这里为DES;如果想用Blowfish算法,则用getInstance("Blowfish") // BouncyCastle基本上支持所有通用标准算法 KeyGenerator keygen = KeyGenerator.getInstance("DES"); // 指定密钥长度,长度越高,加密强度越大 keygen.init(56); // 产生密钥 key = keygen.generateKey(); // 构造输出文件,这里的目录是动态的,根据用户名称来构造目录 ObjectOutputStream keyFile = new ObjectOutputStream( new FileOutputStream(getKeyPath())); keyFile.writeObject(key); keyFile.close(); } catch (NoSuchAlgorithmException e5) { e5.printStackTrace(); System.exit(0); } catch (IOException e4) { e4.printStackTrace(); System.exit(0); } } privatestatic SecretKey getSecretKey() { // 从密钥文件中读密钥 SecretKey key = null; try { ObjectInputStream keyFile = new ObjectInputStream( new FileInputStream(getKeyPath())); key = (SecretKey) keyFile.readObject(); keyFile.close(); } catch (FileNotFoundException ey1) { e1.printStackTrace(); System.exit(0); } catch (Exception ey2) { e2.printStackTrace(); } return key; } publicstatic String encrypt(String encryptStr) { SecretKey key = getSecretKey(); Cipher cipher = null; try { // 设置算法,应该与加密时的设置一样 cipher = Cipher.getInstance("DES"); // 设置解密模式 cipher.init(Cipher.ENCRYPT_MODE, key); } catch (Exception ey3) { ey3.printStackTrace(); } byte[] data = null; try { data = cipher.doFinal(encryptStr.getBytes()); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } encryptStr = Base64.encodeBase64String(data); return encryptStr; } publicstatic String decrypt(String decryptStr) { SecretKey key = getSecretKey(); // 用key产生Cipher Cipher cipher = null; try { // 设置算法,应该与加密时的设置一样 cipher = Cipher.getInstance("DES"); // 设置解密模式 cipher.init(Cipher.DECRYPT_MODE, key); } catch (Exception ey3) { ey3.printStackTrace(); System.exit(0); } byte[] data = Base64.decodeBase64(decryptStr); try { data = cipher.doFinal(data); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } decryptStr = new String(data); return decryptStr; } }
全部回答
你没有办法半岛的,一次性输入连接密码,只要连接,就是自动连接
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
都昌县鄱阳湖生态摄影协会地址在什么地方,想
上海金恪集团怎么样?
在图示大型圆底烧瓶内湿润的泥沙中,插有几根
火车,k805到重庆站是在北广场还是南广场
百大电器购物中心店怎么去啊,有知道地址的么
三峡大学输电线路工程好吗?
老板欠我三千块钱,我什么时候去要合适呢?我
学无心磨床难吗?想学这个技术?
秦始皇在全国范围内推行郡县制度,郡守和县令
冻胚移植。2015年。阳历7月26号移植的。预产
G-M计数管的工作电压怎么选择
畅通消声器厂地址有知道的么?有点事想过去
电视剧《茶馆》里的西山指的是哪
与 玉不琢不成器 意思相近的诗句
文山百信药材有限公司第四中药堂地址有知道的
推荐资讯
取得票据的原因关系无效的,票据行为无效。()
网速中的上行速度和下行速度各是什么意思?
烧烤牛排怎么腌
简单学习网和步步高学习机哪个好
小明从家到学校走了40分钟,7:30到学校,小
自动车床一号刀走倒角凸轮怎么算
我高中毕业,现在工作太悠闲,整日没事干,想
弃()图()【括号里的两个字须是反义词】
伊盛祥饼食店地址有知道的么?有点事想过去
想给本装个linux的系统,想知道好用吗,比微
X97主板怎么进BISO
百信大药房漳江路店这个地址在什么地方,我要
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?