多平台统一管理软件接口,如何实现多平台统一管理软件接口
319
2023-01-07
本文目录一览:
基本java实现接口加密的单向加密算法:
BASE64 严格地说java实现接口加密,属于编码格式java实现接口加密,而非加密算法
MD5(Message Digest algorithm 5java实现接口加密,信息摘要算法)
SHA(Secure Hash Algorithm,安全散列算法)
HMAC(Hash Message Authentication Code,散列消息鉴别码)
复杂java实现接口加密的对称加密(DES、PBE)、非对称加密算法:
DES(Data Encryption Standard,数据加密算法)
PBE(Password-based encryption,基于密码验证)
RSA(算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)
DH(Diffie-Hellman算法,密钥一致协议)
DSA(Digital Signature Algorithm,数字签名)
ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)
代码参考:
/**
* BASE64加密
*
* @param key
* @return
* @throws Exception
*/
public static String encryptBASE64(byte[] key) throws Exception {
return (new BASE64Encoder()).encodeBuffer(key);
}
/**
* MD5加密
*
* @param data
* @return
* @throws Exception
*/
public static byte[] encryptMD5(byte[] data) throws Exception {
MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);
md5.update(data);
return md5.digest();
}
/**
* SHA加密
*
* @param data
* @return
* @throws Exception
*/
public static byte[] encryptSHA(byte[] data) throws Exception {
MessageDigest sha = MessageDigest.getInstance(KEY_SHA);
sha.update(data);
return sha.digest();
}
}
/**
* 初始化HMAC密钥
*
* @return
* @throws Exception
*/
public static String initMacKey() throws Exception {
KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);
SecretKey secretKey = keyGenerator.generateKey();
return encryptBASE64(secretKey.getEncoded());
}
/**
* HMAC加密
*
* @param data
* @param key
* @return
* @throws Exception
*/
public static byte[] encryptHMAC(byte[] data, String key) throws Exception {
SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC);
Mac mac = Mac.getInstance(secretKey.getAlgorithm());
mac.init(secretKey);
return mac.doFinal(data);
}
随着Internet的迅速发展 电子商务的浪潮势不可挡 日常工作和数据传输都放在Internet网上进行传输 大大提高了效率 降低了成本 创造了良好的效益 但是 由于 Internet网络协议本身存在着重要的安全问题(IP包本身并不继承任何安全特性 很容易伪造出IP包的地址 修改其内容 重播以前的包以及在传输途中拦截并查看包的内容) 使网上的信息传输存在巨大的安全风险电子商务的安全问题也越来越突出 加密是电子商务中最主要的安全技术 加密方法的选取直接影响电子商务活动中信息的安全程度 在电子商务系统中 主要的安全问题都可以通过加密来解决 数据的保密性可通过不同的加密算法对数据加密来实现
对我国来讲 虽然可以引进很多的外国设备 但加密设备不能依靠引进 因为它涉及到网络安全 国家机密信息的安全 所以必须自己研制 当前国际上有许多加密算法 其中DES(Data Encryption Standard)是发明最早的用得最广泛的分组对称加密算法 DES用 位蜜钥加密 位明文 输出 位密文 DES的 位密钥共有 种可能的密钥 但历史上曾利用穷举攻击破解过DES密钥 年电子边境基金会(EFF)用 万美元制造的专用计算机 用 小时破解了DES的密钥 年 EFF用 小时完成了破解工作 使DES算法受到了严重打击 使它的安全性受到严重威胁 因为JAVA语言的安全性和网络处理能力较强 本文主要介绍使用IDEA(Internation Data Encryption Algorithm )数据加密算法在Java环境下实现数据的安全传输
一 IDEA数据加密算法
IDEA数据加密算法是由中国学者来学嘉博士和著名的密码专家 James L Massey 于 年联合提出的 它的明文和密文都是 比特 但密钥长为 比特 IDEA 是作为迭代的分组密码实现的 使用 位的密钥和 个循环 这比 DES 提供了更多的 安全性 但是在选择用于 IDEA 的密钥时 应该排除那些称为 弱密钥 的密钥 DES 只有四个弱密钥和 个次弱密钥 而 IDEA 中的弱密钥数相当可观 有 的 次方个 但是 如果密钥的总数非常大 达到 的 次方个 那么仍有 的 次方个密钥可供选择 IDEA 被认为是极为安全的 使用 位的密钥 蛮力攻击中需要进行的测试次数与 DES 相比会明显增大 甚至允许对弱密钥测试 而且 它本身也显示了它尤其能抵抗专业形式的分析性攻击
二 Java密码体系和Java密码扩展
Java是Sun公司开发的一种面向对象的编程语言 并且由于它的平台无关性被大量应用于Internet的开发 Java密码体系(JCA)和Java密码扩展(JCE)的设计目的是为Java提供与实现无关的加密函数API 它们都用factory方法来创建类的例程 然后把实际的加密函数委托给提供者指定的底层引擎 引擎中为类提供了服务提供者接口在Java中实现数据的加密/解密 是使用其内置的JCE(Java加密扩展)来实现的 Java开发工具集 为实现包括数字签名和信息摘要在内的加密功能 推出了一种基于供应商的新型灵活应用编程接口 Java密码体系结构支持供应商的互操作 同时支持硬件和软件实现 Java密码学结构设计遵循两个原则:( )算法的独立性和可靠性 ( )实现的独立性和相互作用性 算法的独立性是通过定义密码服务类来获得 用户只需了解密码算法的概念 而不用去关心如何实现这些概念 实现的独立性和相互作用性通过密码服务提供器来实现 密码服务提供器是实现一个或多个密码服务的一个或多个程序包 软件开发商根据一定接口 将各种算法实现后 打包成一个提供器 用户可以安装不同的提供器 安装和配置提供器 可将包含提供器的ZIP和JAR文件放在CLASSPATH下 再编辑Java安全属性文件来设置定义一个提供器 Java运行环境Sun版本时 提供一个缺省的提供器Sun
三 Java环境下的实现
加密过程的实现
void idea_enc( int data [] /*待加密的 位数据首地址*/ int key []){int i ;int tmp x;int zz[]=new int[ ];for ( i = ; i < ; i += ) { /*进行 轮循环*/for(int j= box=i;j< ;j++ box++){zz[j]=key [box];}x = handle_data(data zz);tmp = data [ ]; /*交换中间两个*/data [ ] = data [ ];data [ ] = tmp;}tmp = data [ ]; /*最后一轮不交换*/data [ ] = data [ ];data [ ] = tmp;data [ ] = MUL(data [ ] key [ ]);data [ ] =(char)((data [ ] + key [ ])% x );data [ ] =(char)((data [ ] + key [ ])% x );data [ ] = MUL(data [ ] key [ ]);}
解密过程的实现
void key_decryExp(int outkey[])/*解密密钥的变逆处理*/{ int tmpkey[] = new int[ ] ;int i;for ( i = ; i < ; i++) {tmpkey[i] = outkey[ wz_spkey[i] ] ;/*换位*/}for ( i = ; i < ; i++) {outkey[i] = tmpkey[i];}for ( i = ; i < ; i++) {outkey[wz_spaddrever[i]] = (char)( outkey[wz_spaddrever[i]]) ;/*替换成加法逆*/}for ( i = ; i < ; i++){outkey[wz_spmulrevr[i]] =(char)(mulInv(outkey[wz_spmulrevr[i]] ));/*替换成乘法逆*/}}
四 总结
lishixinzhi/Article/program/Java/hx/201311/27228关于java实现接口加密和java实现加密算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 java实现接口加密的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java实现加密算法、java实现接口加密的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~