java加密工作模式None_simple1234

simple1234 回答了问题 · 2018-05-25

引入文件

const {ReadCard} = CardReader;

自己编写js文件

import md5 from 'crypto-js/md5';

import {message} from 'antd';

try{const obj=new ActiveXObject("CardlanActiveX.CardReader.1");

}catch(e){message.error("读写器控件没有安装,请先下载安装。")

}

。。。。。。。。。。。。。。。。。。。。。。。

const CardReader={ReadCard,

}

export default CardReader;

自己编写js文件import md5 from 'crypto-js/md5';import {message} from 'antd';try{

关注 1回答 1

simple1234 收藏了问题 · 2018-03-26

产品要写一个类似检测的东西

有四块内容检测,要发四个AJAX。

我想到的$,when

但是用这个的话,后面三个done时间是立马执行的。

我就写了一个settimeout

但是里面有一个依次打对号的我就写了一个setInterval

但是这个时间老是对不上。

发现写法很有问题 有没有什么好点的写法 或者指出我的错误。$('.txturl button').click(function() {

var count = 0

$.when($.ajax({

type: "get",

url: "http://www.webossgoo3.com/google/CheckContent",

async: true,

success: function(data) {

var pardata = JSON.parse(data)

$('.gdt').addClass('layui-anim layui-anim-rotate layui-anim-loop');

$('.coun-jc').hide();

$('.txt-bet li').removeClass('active')

$('.txtnum section span.load-jc').css('display', 'table-cell');

if(pardata.title) {

$('.cont2 i').html('ဆ')

$('.cont2 i').css('color', 'red')

for(j in pardata.title) {

$('.contentul ul').eq(0).append(

"

" + j + ":" + pardata.title[j] + ""

)

}

};

for(k in pardata.keywords) {

$('.contentul ul').eq(1).append(

"

" + k + ":" + pardata.keywords[k] + ""

)

}

if(!pardata.original) {

$('.cont1 i').html('ဆ');

$('.cont1 i').css('color', 'red')

}

var i = 0;

setInterval(function() {

if(i <= $('.basetxt table i').size() - 1 ) {

$('.basetxt table i').eq(i).show()

i++

} else {

$('.txt-bet li').eq(0).addClass('active')

return false

}

}, 500)

},

error: function() {

layer.msg('检测失败1')

}

})).done(function() {

setTimeout(function () {

$.ajax({

type: "get",

url: "http://www.webossgoo3.com/google/checkSearch",

async: true,

success: function(data) {

var pardata = JSON.parse(data)

if (pardata.google) {

$('.cont3 i').html('ဆ')

$('.cont3 i').css('color', 'red')

}

if (pardata.bing) {

$('.cont4 i').html('ဆ')

$('.cont4 i').css('color', 'red')

}

if (pardata.yahoo) {

$('.cont5 i').html('ဆ')

$('.cont5 i').css('color', 'red')

}

if (pardata.title_top1) {

$('.cont6 i').html('ဆ')

$('.cont7 i').css('color', 'red')

}

var a = 0;

setInterval(function() {

if(a <= $('.seartxt table i').length - 1) {

$('.seartxt table i').eq(a).show()

a++

} else {

$('.txt-bet li').eq(1).addClass('active')

return false

}

}, 500)

},

error: function() {

layer.msg('检测失败2')

}

})

})

}).done(function() {

setTimeout(function () {

$.ajax({

type: "get",

url: "http://www.webossgoo3.com/google/CheckSearch",

async: true,

success: function(data) {

var pardata = JSON.parse(data)

var i = 0;

setInterval(function() {

if(i <= $('.seotxt table i').length - 1) {

$('.seotxt table i').eq(i).show()

i++

} else {

$('.txt-bet li').eq(2).addClass('active')

return false

}

}, 500)

},

error: function() {

layer.msg('检测失败3')

}

})

},500 * ($('.seartxt table i').length) )

}).done(function() {

setTimeout(function () {

$.ajax({

type: "get",

url: "http://www.webossgoo3.com/google/CheckContent",

async: true,

success: function(data) {

var pardata = JSON.parse(data)

var i = 0;

setInterval(function() {

if(i <= $('.basetxt table i').length - 1) {

$('.opttxt table i').eq(i).show()

i++

} else {

$('.txt-bet li').eq(3).addClass('active')

$('.gdt').removeClass('layui-anim layui-anim-rotate layui-anim-loop');

$('.coun-jc').show()

$('.coun-jc').text('88')

$('.txtnum section span.load-jc').css('display', 'none');

return false

}

}, 500)

},

error: function() {

layer.msg('检测失败4')

}

})

},500 * ($('.seotxt table i').length) + 500 * ($('.seartxt table i').length) )

})

})

产品要写一个类似检测的东西有四块内容检测,要发四个AJAX。我想到的$,when但是用这个的话,后面三个done时间是立马执行的。我就写了一个settimeout

simple1234 关注了问题 · 2018-03-26

产品要写一个类似检测的东西

有四块内容检测,要发四个AJAX。

我想到的$,when

但是用这个的话,后面三个done时间是立马执行的。

我就写了一个settimeout

但是里面有一个依次打对号的我就写了一个setInterval

但是这个时间老是对不上。

发现写法很有问题 有没有什么好点的写法 或者指出我的错误。$('.txturl button').click(function() {

var count = 0

$.when($.ajax({

type: "get",

url: "http://www.webossgoo3.com/google/CheckContent",

async: true,

success: function(data) {

var pardata = JSON.parse(data)

$('.gdt').addClass('layui-anim layui-anim-rotate layui-anim-loop');

$('.coun-jc').hide();

$('.txt-bet li').removeClass('active')

$('.txtnum section span.load-jc').css('display', 'table-cell');

if(pardata.title) {

$('.cont2 i').html('ဆ')

$('.cont2 i').css('color', 'red')

for(j in pardata.title) {

$('.contentul ul').eq(0).append(

"

" + j + ":" + pardata.title[j] + ""

)

}

};

for(k in pardata.keywords) {

$('.contentul ul').eq(1).append(

"

" + k + ":" + pardata.keywords[k] + ""

)

}

if(!pardata.original) {

$('.cont1 i').html('ဆ');

$('.cont1 i').css('color', 'red')

}

var i = 0;

setInterval(function() {

if(i <= $('.basetxt table i').size() - 1 ) {

$('.basetxt table i').eq(i).show()

i++

} else {

$('.txt-bet li').eq(0).addClass('active')

return false

}

}, 500)

},

error: function() {

layer.msg('检测失败1')

}

})).done(function() {

setTimeout(function () {

$.ajax({

type: "get",

url: "http://www.webossgoo3.com/google/checkSearch",

async: true,

success: function(data) {

var pardata = JSON.parse(data)

if (pardata.google) {

$('.cont3 i').html('ဆ')

$('.cont3 i').css('color', 'red')

}

if (pardata.bing) {

$('.cont4 i').html('ဆ')

$('.cont4 i').css('color', 'red')

}

if (pardata.yahoo) {

$('.cont5 i').html('ဆ')

$('.cont5 i').css('color', 'red')

}

if (pardata.title_top1) {

$('.cont6 i').html('ဆ')

$('.cont7 i').css('color', 'red')

}

var a = 0;

setInterval(function() {

if(a <= $('.seartxt table i').length - 1) {

$('.seartxt table i').eq(a).show()

a++

} else {

$('.txt-bet li').eq(1).addClass('active')

return false

}

}, 500)

},

error: function() {

layer.msg('检测失败2')

}

})

})

}).done(function() {

setTimeout(function () {

$.ajax({

type: "get",

url: "http://www.webossgoo3.com/google/CheckSearch",

async: true,

success: function(data) {

var pardata = JSON.parse(data)

var i = 0;

setInterval(function() {

if(i <= $('.seotxt table i').length - 1) {

$('.seotxt table i').eq(i).show()

i++

} else {

$('.txt-bet li').eq(2).addClass('active')

return false

}

}, 500)

},

error: function() {

layer.msg('检测失败3')

}

})

},500 * ($('.seartxt table i').length) )

}).done(function() {

setTimeout(function () {

$.ajax({

type: "get",

url: "http://www.webossgoo3.com/google/CheckContent",

async: true,

success: function(data) {

var pardata = JSON.parse(data)

var i = 0;

setInterval(function() {

if(i <= $('.basetxt table i').length - 1) {

$('.opttxt table i').eq(i).show()

i++

} else {

$('.txt-bet li').eq(3).addClass('active')

$('.gdt').removeClass('layui-anim layui-anim-rotate layui-anim-loop');

$('.coun-jc').show()

$('.coun-jc').text('88')

$('.txtnum section span.load-jc').css('display', 'none');

return false

}

}, 500)

},

error: function() {

layer.msg('检测失败4')

}

})

},500 * ($('.seotxt table i').length) + 500 * ($('.seartxt table i').length) )

})

})

关注 9回答 7

simple1234 赞了文章 · 2017-10-11

php项目下的缓存控制客户端向服务端请求php页面的过程中,服务端是可控的。

可控的才可优化,优化的重点,即是缓存优化。

试想?数据存储在DB中,访问DB就要读取硬盘数据,但如果需要数据的速度>>硬盘最大的读写速度,

就会产生IO瓶颈。

那么,使用内存缓存数据结果集,让用户首先读取缓存,未果则从DB中读取。

如此,就能提高数据响应的速度,也保护了数据源。

php虽开启shmop扩展可管理内存,但所能管理的内存大小是有限的。

才有大为流行的NOSQL:

memcache 高性能的分布式内存缓存服务器

(分布式配置:1.有多个memcache服务端;2.开启php相应扩展,通过addServer()即可实现。底层通过对key的hash取余来标识服务器,因此代码实现上,不要改变存取前的服务器的顺序,否则可能出现获取不到值的情况)

redis 高性能的内存缓存服务器

(主从配置:master主服务器执行修改操作,多个slave(只读)连接master,在首次全量复制后,增量更新数据到自身。如果slave断了,重新连接master时,会自动全量复制)

MEMCACHE以key-value的方式存储

key可达250B,value可达1M

value是以字符串的形式保存的:php标量数据类型,保存时会隐式转换为字符串;

php其他数据类型, 保存时自动序列化,取出时自动反序列化. //该过程是php的memcache扩展开启后,底层实现的

item过期时间是时间戳时,无限制;以s为单位时,不能超过30天的秒数

不能持久化,要的就是速度

注意事项simple1234simple1234simple1234

∧memcache与redis,最大区别在于持久化(即数据能否保存在硬盘上).

redis因其多样的数据结构,而满足更多的业务需求,但memcache的读取速度更快些.

REDIS支持丰富的数据结构(在此先不展开该方面的讨论)常用项:string,hash,list,set,sortedset //redis本身就实现了双向列表,list还可模拟出队列,堆栈的数据结构

value值可达512M

可持久化:快照持久化(SNAPSHOTTING)

一定时间内一定数量的key值的改变,就会全量复制redis内存管理的数据到硬盘.

simple1234精细持久化(AOF)

用来保存每次执行的命令.开启后,每秒保存一次。见下图的英文注释

simple1234

simple1234

注意事项simple1234

simple1234查看原文

php项目下的缓存控制 {代码...} MEMCACHE 以key-value的方式存储 key可达250B,value可达1M value是以字符串的形式保存的: {代码...} item过期时间是时间戳时,无限制;以s为单位时,不能超过30天的秒数 不能持久化,要的就是速度 注意事项 ∧ memcache与redis,最大区...

赞 4收藏 9评论 0

simple1234 回答了问题 · 2017-03-30

$arr1 = [['day'=>'2017-03-28','reg_count'=>14],['day'=>'2017-03-27','reg_count'=>53]];

$arr2 = [['day'=>'2017-03-29','pay_count'=>2],['day'=>'2017-03-28','pay_count'=>12]];$arr1_1 = array_column($arr1,'reg_count','day');

$arr2_1 = array_column($arr2,'pay_count','day');

$return_arr = array();

foreach (array_unique(array_merge(array_keys($arr1_1),array_keys($arr2_1))) as $key =>$val){

$return_arr[$key]['day'] = $val;

$return_arr[$key]['reg_count'] = 0;

$return_arr[$key]['pay_count'] = 0;

if(key_exists($val, $arr1_1)){

$return_arr[$key]['reg_count'] = $arr1_1[$val];

}

if(key_exists($val, $arr2_1)){

$return_arr[$key]['pay_count'] = $arr2_1[$val];

}

}

print_r($return_arr);

$arr1 = [['day'=>'2017-03-28','reg_count'=>14],['day'=>'2017-03-27','reg_count'=>53]];$arr2 = [['day'=>'2017-03-29','pay_count'=>2],['day'=>'2017-03-28','pay_count'=>12]];

关注 5回答 4

simple1234 关注了标签 · 2017-03-29

36094d6aac371c8bc6e2f3a083d4e1b1.png

PHP,是英文超文本预处理语言 Hypertext Preprocessor 的缩写。PHP 是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML 中使用。PHP 的语法借鉴吸收 C语言、Java 和 Perl 等流行计算机语言的特点,易于一般程序员学习。(目前是 Web 开发性价比最高的语言)

PHP,是英文超文本预处理语言 Hypertext Preprocessor 的缩写。PHP 是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML 中使用。PHP 的语法借鉴吸收 C语言、Java 和 Perl 等流行计算机语言的特点,易于一般程序员学习。(目前是 Web 开发性价比最高的...

关注 89115

simple1234 关注了问题 · 2015-04-23

跟人合作搞个Android App,我负责服务器端 用的是PHP,

手机端和服务器端之间的数据传输有加密,

他手机端用的是这个JAVA的数据加密类,

求相对应的PHP版本 数据加密类。package com.ssh.util;

import java.io.BufferedOutputStream;

import java.io.FileOutputStream;

import java.security.Key;

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.crypto.SecretKey;

import javax.crypto.SecretKeyFactory;

import javax.crypto.spec.DESedeKeySpec;

import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;

/**

* DESede对称加密算法演示

*

* @author zolly

* */

public class DESedeCoder {

/**

* 密钥算法

* */

public static final String KEY_ALGORITHM = "DESede";

/**

* 加密/解密算法/工作模式/填充方式

* */

public static final String CIPHER_ALGORITHM = "DESede/ECB/PKCS5Padding";

/**

*

* 生成密钥

*

* @return byte[] 二进制密钥

* */

public static byte[] initkey() throws Exception {

// 实例化密钥生成器

KeyGenerator kg = KeyGenerator.getInstance(KEY_ALGORITHM);

// 初始化密钥生成器

kg.init(168);

// 生成密钥

SecretKey secretKey = kg.generateKey();

// 获取二进制密钥编码形式

byte[] key = secretKey.getEncoded();

BufferedOutputStream keystream =

new BufferedOutputStream(new FileOutputStream("DESedeKey.dat"));

keystream.write(key, 0, key.length);

keystream.flush();

keystream.close();

return key;

}

/**

* 转换密钥

*

* @param key

* 二进制密钥

* @return Key 密钥

* */

public static Key toKey(byte[] key) throws Exception {

// 实例化Des密钥

DESedeKeySpec dks = new DESedeKeySpec(key);

// 实例化密钥工厂

SecretKeyFactory keyFactory = SecretKeyFactory

.getInstance(KEY_ALGORITHM);

// 生成密钥

SecretKey secretKey = keyFactory.generateSecret(dks);

return secretKey;

}

/**

* 加密数据

*

* @param data

* 待加密数据

* @param key

* 密钥

* @return byte[] 加密后的数据

* */

public static byte[] encrypt(byte[] data, byte[] key) throws Exception {

// 还原密钥

Key k = toKey(key);

// 实例化

Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);

// 初始化,设置为加密模式

cipher.init(Cipher.ENCRYPT_MODE, k);

// 执行操作

return cipher.doFinal(data);

}

/**

* 解密数据

*

* @param data

* 待解密数据

* @param key

* 密钥

* @return byte[] 解密后的数据

* */

public static byte[] decrypt(byte[] data, byte[] key) throws Exception {

// 欢迎密钥

Key k = toKey(key);

// 实例化

Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);

// 初始化,设置为解密模式

cipher.init(Cipher.DECRYPT_MODE, k);

// 执行操作

return cipher.doFinal(data);

}

/**

* 加密字符串

* @param data

* @return

*/

public static String encode(String str,String screatKey){

String result = "";

byte[] data = DESedeCoder.encrypt(str.getBytes(), screatKey.getBytes());

result = Base64.encode(data);

return result;

}

/**

* 解密字符串

* @param str

* @return

*/

public static String decode(String str,String screatKey){

String result = "";

try {

byte[] data = Base64.decode(str);

data = DESedeCoder.decrypt(data, screatKey.getBytes());

result = new String(data);

} catch (Exception e) {

e.printStackTrace();

}

return result;

}

/**

* 进行加解密的测试

*

* @throws Exception

*/

public static void main(String[] args) throws Exception {

String key = "2C7dDYBy20mmKy3391xivikz";

String str = "hello world~";

System.out.println("Key:"+key);

System.out.println("原文:" + str);

//加密

String value = encode(str,key);

System.out.println("加密后:" + value);

System.out.println("解密后:" + decode(value,key));

}

}

关注 3回答 3

simple1234 关注了问题 · 2015-04-23

安全机制

对报文进行MAC,以实现防篡改

发起方先对标签数据进行Base64编码,根据编码后的数据,然后进行循环异或(将数据分成若干个8个字节的数据段,最后不足8位后加0x00补齐8位)。得到标签数据。然后将新的报文发送给对方。

为原始报文的Base64编码结果xml<?xml version="1.0" encoding="UTF-8"?>

ccb_pos

pos_service

20111121094051

PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48ZGF0YT48cHJvZHVjdD4wMzI2PC9wcm9kdWN0PjxwcmVtaXVtPjExMDAuMDwvcHJlbWl1bT48ZHJpdmVycz48ZHJpdmVyPkphbWVzPC9kcml2ZXI+PGRyaXZlcj5UZWRkeTwvZHJpdmVyPjwvZHJpdmVycz48L2RhdGE+

8U42KXyd76FSCmRT //char 16

处理方式

接收方在接收到报文后,将标签数据分成若干个8个字节的数据段,最后不足8位后加0x00补齐8位,循环异或一次。然后和标签数据进行比对。如果比对一致表示通过验证,最后将标签数据按照Base64解码,得到交易明文数据。

参考文档

网上找了一段PHP代码

这代码有问题,大概方式。php<?php

/** 防止乱码 */

header("Content-type:text/html;charset=utf-8");

//MCRYPT 密码配置

$MCRYPT_key = "key:232"; //密钥

$MCRYPT_cipher = MCRYPT_DES; //密码类型

$MCRYPT_modes = MCRYPT_MODE_ECB; //密码模式

function MCRYPT_str($str,$type=1){

global $MCRYPT_key,$MCRYPT_cipher,$MCRYPT_modes;

$iv = mcrypt_create_iv(mcrypt_get_iv_size($MCRYPT_cipher,$MCRYPT_modes),MCRYPT_RAND);//初始化向量

if($type==1){

$str = mcrypt_encrypt($MCRYPT_cipher,$MCRYPT_key,$str,$MCRYPT_modes,$iv); //加密函数

}else{

$str = mcrypt_decrypt($MCRYPT_cipher,$MCRYPT_key,$str,$MCRYPT_modes,$iv);

}

return $str;

}

$str="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48ZGF0YT48cHJvZHVjdD4wMzI2PC9wcm9kdWN0PjxwcmVtaXVtPjExMDAuMDwvcHJlbWl1bT48ZHJpdmVycz48ZHJpdmVyPkphbWVzPC9kcml2ZXI+PGRyaXZlcj5UZWRkeTwvZHJpdmVyPjwvZHJpdmVycz48L2RhdGE+";

var_dump($str);

echo '
';

var_dump(base64_decode($str));

echo '
';

var_dump(mac_($str));

echo '
';

//说明:MAC算法,将字符串$data分为八字节为单位的数据块,标号为D1,D2,D3..,如果最后的数据块不足

//8字节,则在后面加上\x00直到长度达到8字节为止,最后按照下面流程产生MAC,

//8字节的初始值:\x00\x00\x00\x00\x00\x00\x00\x00

//流程:初始值 异或 D1 —>异或的结果进行des 异或 D2 —>异或的结果进行des 异或 D2 —>异或的结果进行des

function mac_($data)

{

//设初始值

$init="\x00\x00\x00\x00\x00\x00\x00\x00";

//对$data进行8字节分割,获得数组

$tmp_data=strtoarray($data,8);

$tmp_init=$init;

foreach($tmp_data as $value)

{

//进行异或运算

$tmp_init=myEncrypt($tmp_init,$value);

var_dump($tmp_init);

//进行加密

//$tmp_init=MCRYPT_str($tmp_init);

}

var_dump($tmp_init);

return bin2hex($tmp_init);

}

//函数名:strtoarray

//说明:将字符串按8字节切割,最后不足8字节的用\x00填补

function strtoarray($str,$limit)

{

$len=strlen($str);

$tmp_arr=array();

$count=floor($len/$limit);

$left_num=$len-$count*$limit;

for($i=0;$i

{

$str.="\x00";

}

for($i=0;$i

{

$tmp_arr[]=substr($str,0,$limit);

if(strlen($str)>$limit+1)

{

$str=substr($str,$limit,strlen($str));

}

}

return $tmp_arr;

}

//函数名:myEncrypt

//说明:异或运算函数

function myEncrypt($string, $key)

{

for($i=0;$i

{

for($j=0;$j

{

$string[$i] = $string[$i]^$key[$j];

}

}

return $string;

}

?>

不知道哪位研究过没有,怎么做的,没有头绪。

关注 3回答 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java提供了很多加密算法,可以用于加密和解密jar文件。常用的加密算法有AES、DES、RSA等。 下面是一个使用AES算法对jar文件进行加密和解密的示例代码: ```java import java.io.*; import java.security.*; import javax.crypto.*; import javax.crypto.spec.*; public class JarEncryptor { private static final String ALGO = "AES"; private static final String TRANSFORMATION = "AES/CBC/PKCS5Padding"; private static final byte[] IV = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }; public static void encrypt(String key, File inputFile, File outputFile) throws Exception { doCrypto(Cipher.ENCRYPT_MODE, key, inputFile, outputFile); } public static void decrypt(String key, File inputFile, File outputFile) throws Exception { doCrypto(Cipher.DECRYPT_MODE, key, inputFile, outputFile); } private static void doCrypto(int cipherMode, String key, File inputFile, File outputFile) throws Exception { Key secretKey = new SecretKeySpec(key.getBytes(), ALGO); Cipher cipher = Cipher.getInstance(TRANSFORMATION); IvParameterSpec iv = new IvParameterSpec(IV); cipher.init(cipherMode, secretKey, iv); FileInputStream inputStream = new FileInputStream(inputFile); byte[] inputBytes = new byte[(int) inputFile.length()]; inputStream.read(inputBytes); byte[] outputBytes = cipher.doFinal(inputBytes); FileOutputStream outputStream = new FileOutputStream(outputFile); outputStream.write(outputBytes); inputStream.close(); outputStream.close(); } } ``` 在上面的代码中,我们使用AES算法和CBC模式对jar文件进行加密和解密。加密和解密的关键是密钥,我们需要提供一个密钥来进行加密和解密操作。 以下是使用示例: ```java public static void main(String[] args) throws Exception { String key = "mysecretkey"; File inputFile = new File("test.jar"); File encryptedFile = new File("test_encrypted.jar"); File decryptedFile = new File("test_decrypted.jar"); JarEncryptor.encrypt(key, inputFile, encryptedFile); JarEncryptor.decrypt(key, encryptedFile, decryptedFile); } ``` 在上面的示例中,我们使用“mysecretkey”作为密钥对“test.jar”进行加密,然后再对加密后的文件进行解密,最终得到的文件名为“test_decrypted.jar”。 需要注意的是,加密和解密过程中需要使用相同的密钥,否则无法正确解密。同时,密钥应该足够复杂和安全,以保证加密后的文件不会被破解。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值