Java加密与安全
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java加密与安全,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2665字,纯文字阅读大概需要4分钟。
内容图文
![Java加密与安全](/upload/InfoBanner/zyjiaocheng/839/15c154d28dd341b0a727f2bc6756464e.jpg)
一、简介
数据安全
- 防窃听
- 防篡改
- 防伪造
古代加密方式: - 移位密码:HELLO => IFMMP 按照英文顺序往后移动一位
- 替代密码:HELLO =>p12,5,3 或者是用某一本书的第几页第几行第几个字达到替换密码的目的
这些都是靠人的想象和直觉来涉及的,非常不靠谱,而现代计算机加密:
- 建立在严格的数据理论基础上
- 密码学逐渐发展成一门学科
总结
- 设计一个安全的加密算法非常困难
- 验证一个加密算法是否安全更加困难
- 当前被认为安全的加密算法仅仅是迄今为止尚未被攻破
- 不要 自己设计加密算法
- 不要 自己实现加密算法
- 不要 自己修改已有的加密算法
二、URL编码
一、什么是URL编码?
URL编码是浏览器发送数据给服务器时使用的编码。
- key1=value1&key2=value2&key3=valuye
- q=%E4%B8%AD%E6%96%87
什么是编码?
ascii码就是一种编码,例如
字母 | 编码(16进制) |
---|---|
A | 0x41 |
B | 0x42 |
C | 0x43 |
D | 0x44 |
... | ... |
汉字 | Unicode编码 | UTF-8编码 |
---|---|---|
中 | 0x4e2d | 0xe4b8ad |
文 | 0x6587 | 0xe69687 |
编 | 0x7f16 | 0xe7bc96 |
码 | 0x7801 | 0xe7a081 |
... | ... | ... |
URL编码规则是什么?
- A-Z,a-z,0-9以及**-_.***保持不变
- 其他字符以%XX表示
例如:
1.<:%3C
2.中:%E4%B8%AD(utf-8:0xe4b8ad)
例子
/**
* URL编码
*/
public class SecURL {
public static void main(String[] args) throws UnsupportedEncodingException {
String original = "URL 参数";
String encoded = URLEncoder.encode(original,"UTF-8");
System.out.println("编码后:"+encoded);
String ori = new String(URLDecoder.decode(encoded,"UTF-8"));
System.out.println("解码后:"+ori);
}
}
总结
- URL编码是编码算法,不是加密算法
- URL编码的目的是把任意文本数据编码为%前缀表示的文本,编码后的文本仅包含A-Z,a-z,0-9以及-_.,%*便于浏览器和服务器处理
二、Base64编码
* 什么是Base64编码?
是一种把二进制数据用文本表示的编码算法,例如:byte[]{0xe4,0xb8,0xad} ==> "5Lit"
索引 | 编码 | 索引 | 编码 | 索引 | 编码 |
---|---|---|---|---|---|
0 | A | 26 | a | 52 | 0 |
1 | B | 27 | b | 53 | 1 |
2 | C | 28 | c | ... | ... |
3 | D | 29 | d | 61 | 9 |
... | ... | ... | ... | 62 | + |
25 | Z | 51 | z | 63 | / |
目的
- 是一种用文本(A-Z,a-z,0-9,+/=)表示二进制内容的方式
- 适用于文本协议
- 效率下降
因为二进制经过base64编码它的长度会增加三分之一,如果数组的长度不是3的整数倍,末尾补0x00或0x00 0x00
编码后加=表示补充了1个字节
编码后加==表示补充了2个字节
应用 - 电子邮件协议
/**
* Base64编码
*/
public class SecBase64 {
public static void main(String[] args) throws Exception {
String original = "Hello\u00ff编码测试";
//withoutPadding()可以去掉编码后“=”这个字节,有没有=对于解码来说没有影响
String b64 = Base64.getEncoder().withoutPadding().encodeToString(original.getBytes("UTF-8"));
System.out.println(b64);
String ori = new String(Base64.getDecoder().decode(b64), "UTF-8");
System.out.println(ori);
}
}
由于标准的base64在url中会引起冲突,所以在url中使用base64编码会使用另外一种。
在java中,使用url的base64编码它会把“+”变为“-”,把“/"变为“_”这样在传递url参数的时候不会引起冲突
总结
- Base64是编码算法,不是加密算法
- Base64编码的目的是把任意二进制数据编码为文本(长度增加1/3)
- 其他编码:Base32、Base48、Base58
三、摘要算法
一、什么是摘要算法?
内容总结
以上是互联网集市为您收集整理的Java加密与安全全部内容,希望文章能够帮你解决Java加密与安全所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。