Java加密技术:对Atom进行签名 加密和解密

2016-02-19 21:41 3 1 收藏

下面请跟着图老师小编一起来了解下Java加密技术:对Atom进行签名 加密和解密,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!

【 tulaoshi.com - 编程语言 】

由于一般是根据 HTTP 协议在 Web 上传输 Atom 数据,因此要完全忽略潜在的安全隐患是不可能的。比如,联合内容会显示在多处而不是显示在其原始点(毕竟,这正是联合的意义所在),您如何证明其中一方未曾修改过数据?如果某些敏感数据只能由单一个体或组织获悉怎么办?当然,最明显的例子就是银行信息。您愿意通过原始的 HTTP feed 来接收银行信息吗?所有的敏感信息都存在这个问题,比如公司的内部信息。

这篇文章向大家介绍了如何使用数字签名和加密来解决此类问题。

还记得儿时与伙伴们分享的秘密暗号吗?您可以编制各种消息并对它们进行加密,您的伙伴可以使用暗号来解码这些消息。他还可以使用暗号创建您能够读懂的消息。这就是共享密钥(shared key)加密的一个例子,因为你们俩都有相同的暗号。

如今,这种方法能很好地防止消息内容被别人窥窃,稍后我将向大家介绍如何使用共享密钥加密来实现这一目的。

但是,共享密钥加密存在一个小问题。如果您接收到的一个加密消息告诉你使用雪球攻击女子俱乐部的房子,您如何才能分辨该消息确实是来自您的伙伴,而不是附近不怀好意的人在捉弄您呢?还有,如果您向伙伴发送了一条消息,如何才能保证只有他能够阅读该消息?

在成年人的世界里,可以通过使用公钥 — 私钥 加密来解决此类问题。它使用的并不是一个密钥,而是一个密钥对(key pair)。也就是说,一个人加密的消息只能由另一个人解密,反之亦然。

其中一个密钥是私有的,而另一个则是公有的,与其所有者相关。我们回到小孩的例子中,您的伙伴可以使用他的私钥来加密进攻计划。如果他的公钥可以成功地解密该计划,则您就能知道计划是由他发送的。当然,由于他的公钥是公有的,因此任何人都可以阅读该消息。另一方面,他可以使用您的公钥来加密消息,这就意味着只能使用您的私钥来阅读该消息。这种方法解决了安全问题,但是不能解决验证问题。

真实世界中需要结合两种技术来解决此类问题。比方说,可以对消息进行数字签名。这一过程能使您确定消息的发送者以及消息在传递途中是否被修改过。把这种技术与直接加密技术结合使用,所有的问题就迎刃而解了。

我们先从加密 Atom 条目开始。

查看原文

http://www.ibm.com/developerworks/cn/xml/x-atomencryption/

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1626848.html

延伸阅读
.NET将原来独立的API和SDK合并到一个框架中,这对于程序开发人员非常有利。它将CryptoAPI改编进.NET的System.Security.Cryptography名字空间,使密码服务摆脱了SDK平台的神秘性,变成了简单的.NET名字空间的使用。由于随着整个框架组件一起共享,密码服务更容易实现了,现在仅仅需要学习System.Security.Cryptography名字空间的功能和用于解决...
//使用客户端的公共密钥加密对称密钥并发送给客。encryptAndSendSymmetricKey(client, rsa, symm);//使用对称密钥加密信息并发送encryptAndSendSecretMessage(client, symm, msg);}catch (Exception e){Console.WriteLine(e.Message);Console.WriteLine(e.StackTrace);}finally{try{client.Close();listener.Stop();}catch{//错误}Console.Writ...
使用私有密钥解密该文档,这是唯一可以解密的密钥,并且没有通过网络传递。 不对称算法比对称算法计算的花费多、速度慢。因此我们不希望在线对话中使用不对称算法加密所有信息。相反,我们使用对称算法。下面的例子中我们使用不对称加密来加密对称密钥。接着就使用对称算法加密了。实际上安全接口层(SSL)建立服务器和浏览器之间的安全对话...
标签: Java JAVA基础
本文主要谈一下密码学中的加密和数字签名,以及其在java中如何进行使用。对密码学有兴趣的伙伴,推荐看Bruce Schneier的著作:Applied Crypotography。在jdk1.5的发行版本中安全性方面有了很大的改进,也提供了对RSA算法的直接支持,现在我们从实例入手解决问题(本文仅是作为简单介绍): 一、密码学上常用的概念 ...
标签: Web开发
第一步:把如下代码加入到head区域中 SCRIPT LANGUAGE="JavaScript" !-- Begin function Encrypt(theText) { output = new String; Temp = new Array(); Temp2 = new Array(); TextSize = theText.length; for (i = 0; i TextSize; i++) { rnd = Math.round(Math.random() * 122) + 68; Temp[i] = theText.charCodeAt(i) + rnd; Temp2[i] = r...

经验教程

273

收藏

17
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部