`
OpenMind
  • 浏览: 177425 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
       这篇博文的前两节(1/3,2/3)已经介绍了如何在不安全网络环境下面相互认证双方的身份(建立信任的连接),以及在此基础上进行可靠的密钥协商(DH算法)。        这一节将介绍如何使用协商好的密钥对通道上流淌的数据进行加密。我将使用AES作为对称密钥的算法,密钥强度:128位。这个过程可以简单概括成下面两个步骤:   利用协商好的key创建一个可以用于加密和解密的Aes Cipher; 使用这个cipher对一个byte数组进行加密和解密。 直接上代码吧: /** * 使用AES 128bit 算法进行加密和解密的工具类 * * @author ...
在不安全的网络环境下进行密钥交互(1/3,前面那一节),容易遭受中间人攻击,什么是中间人攻击,请google it。   通信的双方必须是相互信任的,在这个基础上再进行密钥协商才是可靠的。那么,如何建立信任关系呢?   我以前的几篇博文介绍了用如何 用  Java编程方式生成CA证书 以及用CA证书签发客户证书。   现在假设,Alice和Bob的证书都是被同一个CA atlas签发的(见我前面的博文),那么他们之间如何安全的交互密钥呢?   Alice:   发送自己的证书Certa; 发送DH 密钥对的公钥PDa; 发送用自己的私钥 对DH公钥的签名Sa。 Bo ...
      看到标题,几乎所有人都会想到SSL,但SSL比较重量级,我想做的是只利用java的JCE体系(不是JSSE)在非安全网络环境下建立起一个可信任的、安全的通道。       所以这篇博文包括两个主题:可信任和安全。 这一节只考虑如何交互密钥。下一节(2/3)讨论如何建立信任关系,并在可信关系上交换密钥(防止中间人攻击)。        非对称密钥不适合做通道加密,通道加密必然使用对称密钥。既然如此,通信的双方(或多方)如何获取一个共同的密钥呢?         DH算法(Diffie-Hellman)是一种密钥协商算法,不理解原理的可以看这里:http://zh.wikip ...
这些代码首先加载CA证书,然后分别用CA给Alice和Bob签发一个证书并保存到resource/目录下面,用jks格式存储。 CA证书也是用java编程方式制作的,制作过程请看我的上一篇博客。   public static void main(String[] args) throws KeyStoreException, NoSuchAlgorithmException, CertificateException, FileNotFoundException, IOException, UnrecoverableEntryException { //读取CA证书 ...
下面是java编程方式生成CA证书的代码,使用的是BC的provider。生成CA证书与生成普通证书的区别是:1,生成CA证书时,issuer和subject一致;2,在ContentSigner.build()的时候(签名的时候)使用的是与待签名公钥相应的私钥。 下面代码,CA生成以后把私钥和证书一起以一个key entry的方式存入一个jks文件。 static { Security.addProvider(new BouncyCastleProvider()); } public static void main(String[] args) { try ...
对称密钥/非对称密钥/key/cipher symmetric cipher对称密钥:使用相同的密钥进行加密和解密,速度很快 Asymmetric Cipher:非对称密钥:使用公钥加密,私钥解密,速度很慢     key和cipher的区别:可以把cipher看成一台机器,它需要插入一个key才可以工作,可以从一端A插入明文,另一端B输出密文,或者从B插入密文,从A输出明文。      实际上cipher是一个数学函数,key就是自变量,密文是因变量。 数据的完整性 M上传了一个文件及文件的digest,别人下载后可以计算文件生成的digest进行比较看是否被修改。ok了吗?非也,S ...
1,cp 一个windows上的所有中文字体到linux机器:    copy   C:\WINDOWS\Fonts\所有中文字体文件 =>/usr/share/fonts/ 2,删除下面的字体:(最好先备份) sudo rm /etc/fonts/conf.d/49-sansserif.conf
应该很少有人在opensuse上面开发java吧,如果有的话,几乎都会遇到一个很蛋疼等问题,就是eclipse没法工作,点一个什么菜单就崩溃了。 你可以通过更改参数MALLOC_CHECK_为0解决: export MALLOC_CHECK_=0 或者这样启动eclipse: MALLOC_CHECK_=0  ./eclipse MALLOC_CHECK_有四种设定,即: MALLOC_CHECK_=0 ----- 关闭所有检查,不会中断 MALLOC_CHECK_=1 ----- 当有错误被探测到时,在标准错误输出(stderr)上打印错误信息,                ...
下面的代码可以让你在抽象的泛型类里面获取到泛型的类型 abstract class A<T> { Class<T> clazz; void doGetClass() { Type genType = this.getClass().getGenericSuperclass(); Type[] params = ((ParameterizedType) genType).getActualTypeArguments(); this.clazz = (Class<T>) params[0 ...
在csdn上看到一篇关于车羊问题的文章(http://blog.csdn.net/naturebe/article/details/7272232),我编了个程序证明了结论,然后给出了一种简洁的数学证明。如下:    车羊问题(Car and Goats problem)又叫蒙提霍尔问题(Monty Hall Problem)或三门问题。这个问题来源于美国电视娱乐节目Let’s Make a Deal,问题的名字则来自该节目的主持人蒙提·霍尔(Monty Hall)。问题是这样的:参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门就可以赢得该汽车,而另外两扇门后面则各藏 ...

First JNI

    博客分类:
  • java
http://hi.baidu.com/fwmf/blog/item/849c1cf7ece36c3a730eecee.html ubuntu 11.04: cd to a dir: 1,vim HelloWorld.java: public class HelloWorld { private native void print(); public static void main(String[] args) { new HelloWorld().print(); } ...
linux下解压命令大全 .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ——————————————— .gz 解压1:gunzip FileName.gz 解压2:gzip -d FileName.gz 压缩:gzip FileName .tar.gz 和 .tgz 解压:tar zxvf FileName.tar.gz 压缩:tar zcvf FileName.tar.gz DirName ——————————————— .bz2 解压1:bzip2 -d FileName.bz ...
使用hashcode static final ConcurrentMap<Integer, Object> allObjects = new ConcurrentHashMap<Integer, Object>(); private static Integer allocateId(Object obj) { Integer id = Integer.valueOf(System.identityHashCode(obj)); for (;;) { // Loop until a uni ...
1.首先用jdk自带的工具keytool生成一个"服务器证书" a.命令行进入$JAVA_HOME/bin目录($JAVA_HOME为jdk的安装目录) b.输入:keytool -genkey -alias tomcat -keyalg RSA -keystore C:\tomcat.key c.提示输入密码,使用Tomcat的默认值changeit d.输入相关信息后确认(中国国码:86) e.生成PCKS1.2格式的数字证书将保存在C:\tomcat.key 2.修改tomcat目录下的server.xml文件,增加 <Connector protocol=& ...
适应场景: 1,输入的数据限制在相对较小的范围内;2,数据没有重复;3,对于每条记录而言,除了单一整数外,没有任何其他相关联的数据。 2,要求 输入:一个最多包含n个正整数的文件F1,每个数小于n(n=1000000),而且整数没有重复; 输出:包含按升序排列的整数列表的文件F2; 约束:不超过1M的内存空间,运行时间10秒以内。 3,实现概要 可以用一个20位长度的0,1字符串来表示所有元素小于20的非负整数的集合。比如可以用下面的字符串来标示集合{1,2,3,5,8,13}: S={0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 } 即S[1],S[2], ...
Global site tag (gtag.js) - Google Analytics