小程序请配置ai机器人密钥是什么

小程序请配置ai机器人密钥是什么,第1张

小程序请配置ai机器人密钥是SecretID和SecretKey。根据查询相关公开信息显示,首次使用必须在腾讯云官网注册生产访问密钥就是SecretID和SecretKey,并在AI控制台开通3项接口调用权限。

对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。

对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解;但如果你的密钥有1 MB大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间。密钥的大小既要照顾到安全性,也要照顾到效率,是一个trade-off。

对称加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。

常用的有:DES、AES

非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。

常用的有:RSA

(1) 对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。

(2) 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。

(3) 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。

在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。

公钥私钥的原则:

非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的,下面我就详细讲解一下两者的区别。

比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:

上面的过程可以用下图表示,Alice使用Bob的公钥进行加密,Bob用自己的私钥进行解密。

身份认证和加密就不同了,主要用户鉴别用户的真伪。这里我们只要能够鉴别一个用户的私钥是正确的,就可以鉴别这个用户的真伪。

还是Alice和Bob这两个用户,Alice想让Bob知道自己是真实的Alice,而不是假冒的,因此Alice只要使用公钥密码学对文件签名发送 给Bob,Bob使用Alice的公钥对文件进行解密,如果可以解密成功,则证明Alice的私钥是正确的,因而就完成了对Alice的身份鉴别。整个身 份认证的过程如下:

上面的过程可以用下图表示,Alice使用自己的私钥加密,Bob用Alice的公钥进行解密。

DES是Data Encryption Standard(数据加密标准)的缩写,DES算法为密码体制中的对称密码体制。它是由IBM公司研制的一种加密算法,美国国家标准局于1977年公布把它作为非机要部门使用的数据加密标准,二十年来,它一直活跃在国际保密通信的舞台上,扮演了十分重要的角色。

DES是一个分组加密算法,他以64位为分组对数据加密。同时DES也是一个对称算法:加密和解密用的是同一个算法。它的密匙长度是56位(因为每个第8位都用作奇偶校验),密匙可以是任意的56位的数,而且可以任意时候改变。其中有极少量的数被认为是弱密匙,但是很容易避开他们。所以保密性依赖于密钥。

特点:分组比较短、密钥太短、密码生命周期短、运算速度较慢。 DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间。

DES现在已经不视为一种安全的加密算法,因为它使用的56位秘钥过短,以现代计算能力,24小时内即可能被破解。也有一些分析报告提出了该算法的理论上的弱点,虽然实际情况未必出现。该标准在最近已经被 高级加密标准 (AES)所取代。

高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的 DES ,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

AES的区块长度固定为128 位元 ,密钥长度则可以是128,192或256位元。

RSA加密算法是一种 非对称加密算法 。在 公钥加密标准 和 电子商业 中RSA被广泛使用。RSA是 1977年 由 罗纳德·李维斯特 (Ron Rivest)、 阿迪·萨莫尔 (Adi Shamir)和 伦纳德·阿德曼 (Leonard Adleman)一起提出的。当时他们三人都在 麻省理工学院 工作。RSA就是他们三人姓氏开头字母拼在一起组成的。

RSA算法利用两个很大的质数相乘所产生的乘积来加密。这两个质数无论哪一个先与原文件编码相乘,对文件加密,均可由另一个质数再相乘来解密。但要用一个 质数来求出另一个质数,则是十分困难的。因此将这一对质数称为密钥对(Key Pair)。在加密应用时,某个用户总是将一个密钥公开,让需发信的人员将信息用其公共密钥加密后发给该用户,而一旦信息加密后,只有用该用户一个人知道 的私用密钥才能解密。具有数字凭证身份的人员的公共密钥可在网上查到,亦可在请对方发信息时主动将公共密钥传给对方,这样保证在Internet上传输信 息的保密和安全。

开发中:

客户端发送的敏感数据时需要加密处理,客户端数据采用公钥加密,服务器用对应的秘钥解密,客户端保存公钥,服务器保存秘钥

服务器发送的数据也要加密时,服务器端数据采用秘钥加密,客户端数据用对应的公钥加密,客户端保存公钥,服务器保存秘钥

服务器要认证客户端时,客户端数据采用秘钥加密,服务器用对应的公钥解密,客户端保留秘钥,服务器保留公钥

常用加解密方案:

如果想要更加安全一点,可以在仿照微信的通信,每次都在传输数据上加上一个32为随机数和并将数据按照一定的规则生成一个校验sign

这里是例子,直接拿来用就可以了。

package comnnffdes;

import javasecuritySecurity;

import javaxcryptoCipher;

import javaxcryptoSecretKey;

import javaxcryptospecSecretKeySpec;

/字符串 DESede(3DES) 加密

ECB模式/使用PKCS7方式填充不足位,目前给的密钥是192位

3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的

加密标准),是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加

密算法,其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的

密钥,P代表明文,C代表密表,这样,

3DES加密过程为:C=Ek3(Dk2(Ek1(P)))

3DES解密过程为:P=Dk1((EK2(Dk3(C)))

/

public class ThreeDes {

/

@param args在java中调用sun公司提供的3DES加密解密算法时,需要使

用到$JAVA_HOME/jre/lib/目录下如下的4个jar包:

jcejar

security/US_export_policyjar

security/local_policyjar

ext/sunjce_providerjar

/

private static final String Algorithm = "DESede"; //定义加密算法,可用 DES,DESede,Blowfish

//keybyte为加密密钥,长度为24字节

//src为被加密的数据缓冲区(源)

public static byte[] encryptMode(byte[] keybyte,byte[] src){

try {

//生成密钥

SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);

//加密

Cipher c1 = CiphergetInstance(Algorithm);

c1init(CipherENCRYPT_MODE, deskey);

return c1doFinal(src);//在单一方面的加密或解密

} catch (javasecurityNoSuchAlgorithmException e1) {

// TODO: handle exception

e1printStackTrace();

}catch(javaxcryptoNoSuchPaddingException e2){

e2printStackTrace();

}catch(javalangException e3){

e3printStackTrace();

}

return null;

}

//keybyte为加密密钥,长度为24字节

//src为加密后的缓冲区

public static byte[] decryptMode(byte[] keybyte,byte[] src){

try {

//生成密钥

SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);

//解密

Cipher c1 = CiphergetInstance(Algorithm);

c1init(CipherDECRYPT_MODE, deskey);

return c1doFinal(src);

} catch (javasecurityNoSuchAlgorithmException e1) {

// TODO: handle exception

e1printStackTrace();

}catch(javaxcryptoNoSuchPaddingException e2){

e2printStackTrace();

}catch(javalangException e3){

e3printStackTrace();

}

return null;

}

//转换成十六进制字符串

public static String byte2Hex(byte[] b){

String hs="";

String stmp="";

for(int n=0; n<blength; n++){

stmp = (javalangIntegertoHexString(b[n]& 0XFF));

if(stmplength()==1){

hs = hs + "0" + stmp;

}else{

hs = hs + stmp;

}

if(n<blength-1)hs=hs+":";

}

return hstoUpperCase();

}

public static void main(String[] args) {

// TODO Auto-generated method stub

//添加新安全算法,如果用JCE就要把它添加进去

SecurityaddProvider(new comsuncryptoproviderSunJCE());

final byte[] keyBytes = {0x11, 0x22, 0x4F, 0x58,

(byte)0x88, 0x10, 0x40, 0x38, 0x28, 0x25, 0x79, 0x51,

(byte)0xCB,

(byte)0xDD, 0x55, 0x66, 0x77, 0x29, 0x74,

(byte)0x98, 0x30, 0x40, 0x36,

(byte)0xE2

}; //24字节的密钥

String szSrc = "This is a 3DES test 测试";

Systemoutprintln("加密前的字符串:" + szSrc);

byte[] encoded = encryptMode(keyBytes,szSrcgetBytes());

Systemoutprintln("加密后的字符串:" + new String(encoded));

byte[] srcBytes = decryptMode(keyBytes,encoded);

Systemoutprintln("解密后的字符串:" + (new String(srcBytes)));

}

}

用来做一些模块的hash

>grep -Inr SECRET_KEY

conf/global_settingspy:255:SECRET_KEY = ''

conf/project_template/settingspy:61:SECRET_KEY = ''

contrib/auth/tokenspy:54: hash = sha_constructor(settingsSECRET_KEY + unicode(userid) +

contrib/comments/formspy:86: info = (content_type, object_pk, timestamp, settingsSECRET_KEY)

contrib/formtools/utilspy:15: order, pickles the result with the SECRET_KEY setting, then takes an md5

contrib/formtools/utilspy:32: dataappend(settingsSECRET_KEY)

contrib/messages/storage/cookiepy:112: SECRET_KEY, modified to make it unique for the present purpose

contrib/messages/storage/cookiepy:114: key = 'djangocontribmessages' + settingsSECRET_KEY

contrib/sessions/backends/basepy:89: pickled_md5 = md5_constructor(pickled + settingsSECRET_KEY)hexdigest()

contrib/sessions/backends/basepy:95: if md5_constructor(pickled + settingsSECRET_KEY)hexdigest() != tamper_check:

contrib/sessions/backends/basepy:134: # Use settingsSECRET_KEY as added salt

contrib/sessions/backends/basepy:143: settingsSECRET_KEY))hexdigest()

contrib/sessions/modelspy:16: pickled_md5 = md5_constructor(pickled + settingsSECRET_KEY)hexdigest()

contrib/sessions/modelspy:59: if md5_constructor(pickled + settingsSECRET_KEY)hexdigest() != tamper_check:

core/management/commands/startprojectpy:32: # Create a random SECRET_KEY hash, and put it in the main settings

core/management/commands/startprojectpy:37: settings_contents = resub(r"(<=SECRET_KEY = ')'", secret_key + "'", settings_contents)

middleware/csrfpy:38: % (randrange(0, _MAX_CSRF_KEY), settingsSECRET_KEY))hexdigest()

middleware/csrfpy:41: return md5_constructor(settingsSECRET_KEY + session_id)hexdigest()

移动端越来越火了,我们在开发过程中,总会碰到要和移动端打交道的场景,比如NET和android或者iOS的打交道。为了让数据交互更安全,我们需要对数据进行加密传输。今天研究了一下,把几种语言的加密都实践了一遍,实现了NET,java(android),iOS都同一套的加密算法,下面就分享给大家。

AES加密有多种算法模式,下面提供两套模式的可用源码。

加密方式:

先将文本AES加密

返回Base64转码

解密方式:

将数据进行Base64解码

进行AES解密

一、CBC(Cipher Block Chaining,加密块链)模式

是一种循环模式,前一个分组的密文和当前分组的明文异或操作后再加密,这样做的目的是增强破解难度

密钥

密钥偏移量

java/adroid加密AESOperator类:

package combciwxbaseutil;

import javaxcryptoCipher;

import javaxcryptospecIvParameterSpec;

import javaxcryptospecSecretKeySpec;

import sunmiscBASE64Decoder;

import sunmiscBASE64Encoder;

/

AES 是一种可逆加密算法,对用户的敏感信息加密处理 对原始数据进行AES加密后,在进行Base64编码转化;

/

public class AESOperator {

/

加密用的Key 可以用26个字母和数字组成 此处使用AES-128-CBC加密模式,key需要为16位。

/

private String sKey = "smkldospdosldaaa";//key,可自行修改

private String ivParameter = "0392039203920300";//偏移量,可自行修改

private static AESOperator instance = null;

private AESOperator() {

}

public static AESOperator getInstance() {

if (instance == null)

instance = new AESOperator();

return instance;

}

public static String Encrypt(String encData ,String secretKey,String vector) throws Exception {

if(secretKey == null) {

return null;

}

if(secretKeylength() != 16) {

return null;

}

Cipher cipher = CiphergetInstance("AES/CBC/PKCS5Padding");

byte[] raw = secretKeygetBytes();

SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");

IvParameterSpec iv = new IvParameterSpec(vectorgetBytes());// 使用CBC模式,需要一个向量iv,可增加加密算法的强度

cipherinit(CipherENCRYPT_MODE, skeySpec, iv);

byte[] encrypted = cipherdoFinal(encDatagetBytes("utf-8"));

return new BASE64Encoder()encode(encrypted);// 此处使用BASE64做转码。

}

// 加密

public String encrypt(String sSrc) throws Exception {

Cipher cipher = CiphergetInstance("AES/CBC/PKCS5Padding");

byte[] raw = sKeygetBytes();

SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");

IvParameterSpec iv = new IvParameterSpec(ivParametergetBytes());// 使用CBC模式,需要一个向量iv,可增加加密算法的强度

cipherinit(CipherENCRYPT_MODE, skeySpec, iv);

byte[] encrypted = cipherdoFinal(sSrcgetBytes("utf-8"));

return new BASE64Encoder()encode(encrypted);// 此处使用BASE64做转码。

}

// 解密

public String decrypt(String sSrc) throws Exception {

try {

byte[] raw = sKeygetBytes("ASCII");

SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");

Cipher cipher = CiphergetInstance("AES/CBC/PKCS5Padding");

IvParameterSpec iv = new IvParameterSpec(ivParametergetBytes());

cipherinit(CipherDECRYPT_MODE, skeySpec, iv);

byte[] encrypted1 = new BASE64Decoder()decodeBuffer(sSrc);// 先用base64解密

byte[] original = cipherdoFinal(encrypted1);

String originalString = new String(original, "utf-8");

return originalString;

} catch (Exception ex) {

return null;

}

}

public String decrypt(String sSrc,String key,String ivs) throws Exception {

try {

byte[] raw = keygetBytes("ASCII");

SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");

Cipher cipher = CiphergetInstance("AES/CBC/PKCS5Padding");

IvParameterSpec iv = new IvParameterSpec(ivsgetBytes());

cipherinit(CipherDECRYPT_MODE, skeySpec, iv);

byte[] encrypted1 = new BASE64Decoder()decodeBuffer(sSrc);// 先用base64解密

byte[] original = cipherdoFinal(encrypted1);

String originalString = new String(original, "utf-8");

return originalString;

} catch (Exception ex) {

return null;

}

}

public static String encodeBytes(byte[] bytes) {

StringBuffer strBuf = new StringBuffer();

for (int i = 0; i < byteslength; i++) {

strBufappend((char) (((bytes[i] >> 4) & 0xF) + ((int) 'a')));

strBufappend((char) (((bytes[i]) & 0xF) + ((int) 'a')));

}

return strBuftoString();

}

欢迎分享,转载请注明来源:品搜搜测评网

原文地址:https://pinsoso.cn/meirong/2645079.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-12-19
下一篇2023-12-19

随机推荐

  • 全套海蓝之谜使用顺序是什么,海蓝之谜具体使用步骤是什么?

    在我们的日常生活中,经常可以看到有人在使用海蓝之谜护肤品,海蓝之谜护肤品的美誉度很高。很多人进了一整套海蓝之谜护肤品,却不知道怎么用。全套海军神秘使用令海蓝之谜全套的使用顺序:洁面后先用醒肤水,再用浓缩精华,再用各种精华。精华的使用顺序:活

    2024-04-15
    44900
  • 妮维雅柔滑润肤乳真假?

    不是正规厂家进口过来的,没有中文标贴,按照国家化妆品包装的要求必须有中文标签的。你这个是泰国产的,很奇葩的是妮维雅的产品打印MFG和批号的,但是你这个确添加了有效期EXP,更奇葩的是你这个颜色怎么是这样的?这个应该是盈润丝柔保湿乳,这怎么会

    2024-04-15
    43400
  • 全球排行前3的化妆品牌,女生应该都应该知道!

    没有女生能抵抗的了化妆品的诱惑吧,那么在你的心里排名前三的是什么呢?雅诗兰黛这个品牌相信大家也不会陌生,我知道他家品牌卖的东西多(化妆品、护肤品、香水),都具有创新性,技术先进性并且被证明为有效,我是比较喜欢他家的dw粉底液,在涂之前一定要

    2024-04-15
    41400
  • 妮维雅走珠液怎么用?妮维雅走珠液使用方法

    妮维雅走珠液止汗香体,干爽舒适,清爽洁净,男女适用。那么妮维雅走珠液怎么用下面我为你提供妮维雅走珠液使用方法。妮维雅走珠液怎么用外出前或洗澡后,抹于腋下或其他需要抑汗部位,先将瓶口朝下,让走珠接触止汗香体露,然后轻轻滚动走珠,均匀涂于腋

    2024-04-15
    49600
  • 妮维雅爽肤水哪个好

    妮维雅爽肤水儿的种类有很多,而且在很多的套装当中也会有妮维雅的爽肤水,比如男士控油保湿套装当中的爽肤水儿是125毫升,比较适合的就是男士的抗痘或者是控油保湿,并且可以达到控油不紧绷,含有精华,抗痘成分,对于男性日常的清洁或者是控痘的非常好的

    2024-04-15
    33300
  • 妮维雅和欧莱雅哪个好?妮维雅是哪国的品牌?

    妮维雅这个品牌大家都比较熟悉,很多人都会想到它们家的洗面奶,还经常被拿来和其他的护肤品牌做比较,比如说欧莱雅这个品牌,因为欧莱雅的护肤产和妮维雅一样也是有男士和女士的,那妮维雅和欧莱雅哪个好?妮维雅是哪国的品牌?1、妮维雅和欧莱雅哪个好妮维

    2024-04-15
    32300
  • 赋活沙漠肌骆驼套盒怎么样

    好。1、成分好。赋活沙漠肌骆驼套盒的主要成分为水,尿囊素,甘油,其成分很好。2、价格好。赋活沙漠肌骆驼套盒的售价为1389元,而其他同档次的护肤品套盒的价格在1527元以上,所以赋活沙漠肌骆驼套盒的价格很好。好。1、成分方面。卡尔曼尼虫草系

    2024-04-15
    27500

发表评论

登录后才能评论
保存