天天看点

Base64 加密与解密|学习笔记

开发者学堂课程【Java 高级编程:Base64 加密与解密】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:

https://developer.aliyun.com/learning/course/20/detail/359

Base64 加密与解密

内容介绍:

1. Base64 的两个加密类

2. 范例:实现加密与解密操作.

3. 范例:使用盐值加密

4. 范例:多次加密处理

正常来讲加密基本上永远都要伴随着解密,所谓的加密或者是解密往往都要伴随着解密,所谓的加密或者是解密往往都需要有一些新的加密处理操作类,Base64 处理,在这个类里面有两个内部类:

• Base64.Encoder:进行加密才能处理;

– 加密处理:

public byte[] encode(byte[] src);

• Base64.Decoder:进行解密处理;

– 解密处理:

public byte[] decode(String src);

范例:实现加密与解密操作.

public

class

 avaAPIDemo

{

public

static

void

main

(

string

[

]

 args

)

throws

Exception

{

String

 msg

=

  “www

.

mldn

.

cn

" ; //要发送的信息内容

string encMsg

=

new

string

(

Base64

.

getEncoder

(

).

encode

(

msg

.

getBytes

()))

;

//数据加密

system

.

out

.

print1n

(

encMsg

);

string oldMsg

=

new

string

(

Base64

.

getDecoder

(

)

.

decode

(

encMsg

));

system

.

out

.

print1n

(

oldMsg

);

虽然 Base64 可以实现加密与解密的处理,但是其由于其是一个公版的算法,所以如果对其进行加密,最好的做法是使用盐值操作。+

范例:使用盐值加密

public

class

 avaAPIDemo

{

public

static

void

main

(

string

[

]

 args

)

throws

Exception

{

String

 salt

=

"mldnjava"

;

String

 msg

=

  “www

.

mldn

.

cn

" + "

+

 salt

+

" ; //要发送的信息内容

string encMsg

=

new

string

(

Base64

.

getEncoder

(

).

encode

(

msg

.

getBytes

()))

;

//数据加密

system

.

out

.

print1n

(

encMsg

);

string oldMsg

=

new

string

(

Base64

.

getDecoder

(

)

.

decode

(

encMsg

));

system

.

out

.

print1n

(

oldMsg

);

即便有盐值处理,但加密效果并不完善,所以要用到多次加密

范例:多次加密处理

c1ass stringutil

{

private

static

final

 string sALT

=

"mldnjava"

;

//公共的盐值

private

static

final

int

 REPEAT

=

5

;

//加密次数

/**

*加密处理

*@

param str

要加密的字符串,需要与盐值整合

*@

param repeat

加密的重复次数

*@

return

加密后的数据

*/

public

static

String

encode

(

String

 str

)

{

//加密处理

String

 temp

=

 str

+

"{"

+

 SALT

+

 “

}

;

//盐值对外不公布

byte

 data

[]

=

 temp

.

getBytes

()

;

//将字符串变为字节数组

for

(

int

 x

=

 e

;

 x

<

REPEAT

;

 ×

++)

{

data

=

 Base64

.

getEncoder

(

).

encode

(

data

)

;

//重复加密

}

return

.

new

string

(

data

)

;

}

最好的做法是使用 2-3 种加密程序,同时在找到一些完全不可解密的加密算法。