java入门基础--加密JDK自带的包

前言动机:java作为一门开源的语言,尽管出现了非官方的如Spring,Hibernate这样的强大框架, 但是我觉得官方出品的一些东西还是有必要学习,因为只有掌握了这些最底层的

不被人注意的东西,我们才能在更高级的非官方东西中更好的学习他们,这就好比---内练一口气(jdk基础),-----才能 “外联 筋骨皮”

 1. 加密这件事,首先肯定是为了安全,一些银行和保险公司的项目大多都是将加密后的数据储存到数据库,向来没有明文储存一说,不管采用何种方式,其底层原理我猜和jdk加密方式差不多,

    我们来看看jdk'的方式; 

String 被加密的Str=“我爱”;

BASE64Encoder encoder=new BASE64Encoder(); //  BASE64Encoder sun(oracle)公司的
// 加密
String encodeSTR=encoder.encode(被加密的Str.getBytes());
System.out.println(">>jdk加密>>"+encodeSTR);
// 解密  
BASE64Decoder decoder=new BASE64Decoder();
System.out.println(">jdk 解码>>>"+new String(decoder.decodeBuffer(encodeSTR))) ;

************看起来很容易,所以这种很容易被破解******

来看第二种 apache公司的加密

 Base64 base64=new Base64();
byte[] byteEncode= base64.encode(被加密的Str.getBytes());
 System.out.println("Comonc-c加密>>"+new String(base64.encode(被加密的Str .getBytes())));

 byte[] byteDecode  = base64.decode(byteEncode);
 System.out.println("Comonc-c>解密>"+new String(byteDecode));
**********暂时还没被破解的 bouncycastle对称加密 ****************

//生成key
KeyGenerator keyGenerator=KeyGenerator.getInstance("DES");
keyGenerator.init(56);
SecretKey secretKey=keyGenerator.generateKey();
byte[] bytes=secretKey.getEncoded();

//key转换
DESKeySpec desKeySpec=new DESKeySpec(bytes);
SecretKeyFactory factory=SecretKeyFactory.getInstance("DES");
Key converSeKey=factory.generateSecret(desKeySpec);

//加密
Cipher cipher=Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE,converSeKey);
byte[] result=cipher.doFinal(EgStr.getBytes());
System.out.println(">>对称加密>"+ Hex.toHexString(result));

//解密
cipher.init(Cipher.DECRYPT_MODE,converSeKey);
result=cipher.doFinal(result);
System.out.println(">>对称解密>>"+new String(result)); 
 
******以下是maven地址***************

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.10</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on -->
<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15on</artifactId>
    <version>1.54</version>
</dependency>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值