一、 XOR 运算
逻辑运算之中,除了
AND
和
OR
,还有一种
XOR
运算,中文称为"异或运算"。
它的定义是:两个值相同时,返回
false
,否则返回
true
。也就是说,
XOR
可以用来判断两个值是否不同。
true
XOR
true
false
XOR
false
true
XOR
false
true
XOR
false
function
getOTP
(
)
{
const arr
=
[
]
;
for
(
let
i
=
0
;
i
<
32
;
i
++
)
{
arr
.
push
(
getHex
(
)
)
;
return
arr
.
join
(
''
)
;
上面代码中,生成的
key
是32位的十六进制值,对应 MD5 产生的128位的二进制哈希。
第三步,进行 XOR 运算,求出加密后的
message
。
function
getXOR
(
message
,
key
)
{
const arr
=
[
]
;
for
(
let
i
=
0
;
i
<
32
;
i
++
)
{
const m
=
parseInt
(
message
.
substr
(
i
,
1
)
,
16
)
;
const k
=
parseInt
(
key
.
substr
(
i
,
1
)
,
16
)
;
arr
.
push
(
(
m
^
k
)
.
toString
(
16
)
)
;
return
arr
.
join
(
''
)
;
使用这种方法保存用户的登陆密码,即使加密文本泄露,只要一次性的密钥(
key
)没有泄露,对方也无法破解。
XOR 加密简介作者: 阮一峰日期: 2017年5月31日本文介绍一种简单高效、非常安全的加密方法:XOR 加密。一、 XOR 运算逻辑运算之中,除了 AND 和 OR,还有一种 XOR 运算,中文称为"异或运算"。它的定义是:两个值相同时,返回false,否则返回true。也就是说,XOR可以用来判断两个值是否不同。true XO
• 看雪(https://bbs.pediy.com/)
• 安全客(https://www.anquanke.com)
• freebuf(https://www.freebuf.com/)
• 安全牛(https://www.aqniu.com/)
• 安全内参(https://www.secrss.com/)
• 绿盟(http://www.nsfocus.com.cn/)
• 先知社区(https://xz.aliyun.com/)
base64加解密
如果Web应用足够简单,数据的安全性没有那么严格的要求,那么可以采用一种比较简单的加解密方法是base64,这种方式实现起来比较简单,Go语言的base64包已经很好的支持了这个,请看下面的例子:
package main
import (
"encoding/base64"
"fmt"
func base64Encode(src []byte) []byte {
return []byte(base64.StdEncoding.EncodeToSt
在前端的日常开发当中,我们很少用到
异或
运算,但在一些框架源码当中,会有用到
异或
运算。我们在阅读源码的时候,会造成代码的不理解,今天我们介绍一下
异或
运算。
异或
,英文为exclusive OR,缩写成eor.
异或
(eor)是一个数学运算符。它应用于逻辑运算。
异或
的数学符号为“⊕”,计算机符号为“eor”。其运算法则为:
相同为0,不同为1
举例说明:有两个二进制数,分别为a和b,他们两个
异或
计算。
一个值于0
异或
,都是这个数
a ^ 0 = a
任何数跟自己
异或
,都为0
a ^ a
第一周内容是
加密
算法的代码复现。
内容丰富也很有趣,但由于刚放假的心态问题等学得并不多。
加密
算法其实存在于电脑编程的方方面面,无论是为了参加CTF比赛还是单纯为了学习网络安全,
加密
算法的学习都必不可少。
异或
,顾名思义,是一种基于
异或
运算的
加密
算法。
在离散数学的学习中我们接触了各类位运算:(假定下表中a和b均为整型)
在这里我们不做赘述,只单纯讲讲
异或
运算。
异或
,英文为exclusive OR,或缩写成
xor
异或
(
xor
)是一个数学运算符。它应用于逻辑运算。
异或
的数学符号为“⊕”,计算机符号为“
xor
”。其运算法则为: a⊕b = (¬a ∧
b) ∨ (a ∧¬b) 如果a、b两个值不相同,则
异或
结果为1。如果a、b两个值相同,
异或
结果为0。
异或
也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则