「java加密传输」java加密传输实验报告

博主:adminadmin 2022-12-30 02:57:06 1185

今天给各位分享java加密传输的知识,其中也会对java加密传输实验报告进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

javajdbc连接mysql数据库如何实现用户名密码以及传输数据的加密?

如果jdbc和mysql都支持SSL那通过配置就可以了\x0d\x0a如果不支持,那也可以自己来实现。\x0d\x0a实现思路:\x0d\x0a1、在数据库的主机上运行一个java服务,用来转发数据这个服务我们成为A服务\x0d\x0a2、客户端并不直接访问数据库,而访问A服务,客户端和A服务之间的传输代码由用户自己完成,当然可以加密。走套接字,走http,或者其他什么都是可以的。

漫谈Java加密技术(二)

接下来我们介绍对称加密算法 最常用的莫过于DES数据加密算法

DES

DES Data Encryption Standard 即数据加密算法 是IBM公司于 年研究成功并公开发表的 DES算法的入口参数有三个 Key Data Mode 其中Key为 个字节共 位 是DES算法的工作密钥 Data也为 个字节 位 是要被加密或被解密的数据 Mode为DES的工作方式 有两种 加密或解密

DES算法把 位的明文输入块变为 位的密文输出块 它所使用的密钥也是 位

通过java代码实现如下

import java security Key;   import java security SecureRandom;     import javax crypto Cipher;   import javax crypto KeyGenerator;   import javax crypto SecretKey;   import javax crypto SecretKeyFactory;   import javax crypto spec DESKeySpec;       /** *//**   * DES安全编码组件  author by ; *    * pre   * 支持 DES DESede(TripleDES 就是 DES) AES Blowfish RC RC (ARCFOUR)   * DES                  key size must be equal to     * DESede(TripleDES)    key size must be equal to   or     * AES                  key size must be equal to     or  but   and   bits may not be available   * Blowfish             key size must be multiple of   and can only range from   to   (inclusive)   * RC                   key size must be beeen   and   bits   * RC (ARCFOUR)         key size must be beeen   and   bits   * 具体内容 需要关注 JDK Document///docs/technotes/guides/security/l   * /pre   *    * @author 梁栋   * @version     * @since     */  public abstract class DESCoder extends Coder {       /** *//**       * ALGORITHM 算法 br       * 可替换为以下任意一种算法 同时key值的size相应改变        *        * pre       * DES                  key size must be equal to         * DESede(TripleDES)    key size must be equal to   or         * AES                  key size must be equal to     or  but   and   bits may not be available       * Blowfish             key size must be multiple of   and can only range from   to   (inclusive)       * RC                   key size must be beeen   and   bits       * RC (ARCFOUR)         key size must be beeen   and   bits       * /pre       *        * 在Key toKey(byte[] key)方法中使用下述代码       * codeSecretKey secretKey = new SecretKeySpec(key  ALGORITHM);/code 替换       * code       * DESKeySpec dks = new DESKeySpec(key);       * SecretKeyFactory keyFactory = SecretKeyFactory getInstance(ALGORITHM);       * SecretKey secretKey = keyFactory generateSecret(dks);       * /code       */      public static final String ALGORITHM =  DES ;         /** *//**       * 转换密钥br       *        * @param key       * @return       * @throws Exception       */      private static Key toKey(byte[] key) throws Exception {           DESKeySpec dks = new DESKeySpec(key);           SecretKeyFactory keyFactory = SecretKeyFactory getInstance(ALGORITHM);           SecretKey secretKey = keyFactory generateSecret(dks);             // 当使用其他对称加密算法时 如AES Blowfish等算法时 用下述代码替换上述三行代码           // SecretKey secretKey = new SecretKeySpec(key  ALGORITHM);             return secretKey;       }         /** *//**       * 解密       *        * @param data       * @param key       * @return       * @throws Exception       */      public static byte[] decrypt(byte[] data  String key) throws Exception {           Key k = toKey(decryptBASE (key));             Cipher cipher = Cipher getInstance(ALGORITHM);           cipher init(Cipher DECRYPT_MODE  k);             return cipher doFinal(data);       }         /** *//**       * 加密       *        * @param data       * @param key       * @return       * @throws Exception       */      public static byte[] encrypt(byte[] data  String key) throws Exception {           Key k = toKey(decryptBASE (key));           Cipher cipher = Cipher getInstance(ALGORITHM);           cipher init(Cipher ENCRYPT_MODE  k);             return cipher doFinal(data);       }         /** *//**       * 生成密钥       *        * @return       * @throws Exception       */      public static String initKey() throws Exception {           return initKey(null);       }         /** *//**       * 生成密钥       *        * @param seed       * @return       * @throws Exception       */      public static String initKey(String seed) throws Exception {           SecureRandom secureRandom = null;             if (seed != null) {               secureRandom = new SecureRandom(decryptBASE (seed));           } else {               secureRandom = new SecureRandom();           }             KeyGenerator kg = KeyGenerator getInstance(ALGORITHM);           kg init(secureRandom);             SecretKey secretKey = kg generateKey();             return encryptBASE (secretKey getEncoded());       }   }

延续上一个类的实现 我们通过MD 以及SHA对字符串加密生成密钥 这是比较常见的密钥生成方式

再给出一个测试类

import static  junit Assert *;     import  junit Test;     /** *//**   *    * @author by ;; * @version     * @since     */  public class DESCoderTest {         @Test      public void test() throws Exception {           String inputStr =  DES ;           String key = DESCoder initKey();           System err println( 原文:\t  + inputStr);             System err println( 密钥:\t  + key);             byte[] inputData = inputStr getBytes();           inputData = DESCoder encrypt(inputData  key);             System err println( 加密后:\t  + DESCoder encryptBASE (inputData));             byte[] outputData = DESCoder decrypt(inputData  key);           String outputStr = new String(outputData);             System err println( 解密后:\t  + outputStr);             assertEquals(inputStr  outputStr);       }   }

得到的输出内容如下

原文 DES

密钥 f wEtRrV q =

加密后     C qe oNIzRY=

解密后     DES

由控制台得到的输出 我们能够比对加密 解密后结果一致 这是一种简单的加密解密方式 只有一个密钥

其实DES有很多同胞兄弟 如DESede(TripleDES) AES Blowfish RC RC (ARCFOUR) 这里就不过多阐述了 大同小异 只要换掉ALGORITHM换成对应的值 同时做一个代码替换SecretKey secretKey = new SecretKeySpec(key ALGORITHM) 就可以了 此外就是密钥长度不同了

/**

lishixinzhi/Article/program/Java/gj/201311/27624

北大青鸟java培训:互联网信息安全传输加密模式原理分解?

网络安全主要是通过信息加密来实现的。

今天,我们就一起来了解一下,这些信息加密的方法是如何运行的。

它背后的原理都有哪些。

希望通过对本文的阅读。

能够提高大家对互联网信息安全的信任度。

有了“原信息”和它对应的“md5签名字符串”,我们就可以做基本的信息验证:通过md5签名字符串的一致性,来保障我们收到的信息没有受到更改。

P.S.:由于签名signature在后续文章中会另有所指,为区分md5签名字符串,我们将md5签名字符串的叫法,更改为md5指纹字符串。

意思同签名是一样的,就是A之所以是A的证据、特征,可以用签名来表示,也可以用指纹来表示。

这里,我们开始将md5字符串对应的这个特征,称作md5指纹。

但一个容易发现的漏洞是,如果“原信息”和“md5指纹字符串”同时被修改了该怎么办?原信息被代提成了伪信息,而md5指纹字符串也被替换成了伪信息所生成的md5码,这时候,原有的验证过程都可以走通,根本无法发现信息被修改了或者替换了。

为了解决这个问题,在工业实践中便会将验证和加密进行组合使用。

除了单纯的组合,还会引入一些基本的小技巧。

例如,因为md5的验证算法是公开的,所以很容易生成一份信息的md5指纹字符串,从而对原信息进行伪造。

那么,可以不可以让人无法或者说难于伪造这份信息的md5指纹字符串呢?一个小技巧是:并不提供原信息的md5验证码,而是提供“原信息+akey”的md5指纹字符串:这个key,就是一串如“2d2316235b41924ac7c4b194661d2984”这样的随机字符串,它由“发信人”和“收信人”分别单独保存。

这时候,我们的验证流程就变成了:发件人将“原信息”和“key”一起打包,生成一个md5指纹字符串。

再将原信息和md5指纹字符串发送出去。

收件人收到信息后,将“接受信息”和“key”一起打包,生成一个md5字符串,再与接收到的md5字符串比较,看它们是否一致。

在这样的情况下,即便是原信息和md5字符串同时被修改了,但因为伪造者并不知道这个md5字符串是在原有信息的基础上,增加了什么样的一个key字符串来生成的,他就几乎不可能提供一个“原信息+key”的md5字符串。

因为他无法逆向推导出那个key长成什么样。

而这个“几乎不可能”,是由md5加密算法所保证的。

另一种保障“原信息”和“md5指纹字符串”的方式,是直接考虑把md5验证码做加密。

宁夏电脑培训认为这种方式并不同上面的小技巧相冲突,事实上它完全可以和上面的技巧结合,构造出更安全的方式。

但为了降低理解的困难程度,让我们先暂时抛开上面的小技巧,只是单纯地考虑“原信息”“md5指纹字符串”和“md5字符串加密”这三样东西。

JAVA客户端与C#服务器端之间的数据传输加密用什么加密方式? 要求每次加密结果密文都不同。

常用的加密算法有DES、AES、MD5等不管采用哪种加密方法,加密后的内容都会大大增加,这样就给网络传输带来影响如果不增加加密后的内容,可以采用位运算的加密方法

关于java加密传输和java加密传输实验报告的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。