自然语言处理可以使用多种开发工具和语言来实现。 以下是一些常用的开发工具和语言: 1.Python:Python因其丰富的生态系统和开源库而成为自然语言处理领域最流行的语言之一,例如NLTK、SpaCy、gensim、 2. Java:Java在自然语言处理领域也有广泛的应用php 开发工具,例如OpenNLP、Stanford CoreNLP、GATE和Apache Lucene。 3.R:R是一种数据分析和统计语言php 开发工具,也可以用于自然语言处理,例如tm和qdap。 4. C++:C++是一种高性能编程语言,可用于自然语言处理中的估计密集型任务,例如机器翻译和语音识别。 5. JavaScript:JavaScript可用于自然语言处理的后端开发,例如自然语言搜索和聊天机器人。 6. Ruby:Ruby在自然语言处理领域也有很大的应用,例如Ruby语言学和自然语言处理算法。 7. MATLAB:MATLAB可用于自然语言处理中的信号处理和文本分析等任务。 总之,自然语言处理的开发工具和语言有很多选择,开发者可以根据自己的需求和技能选择适合自己的工具和语言。
小知识,大挑战! 本文是参与“程序员必备知识”创作活动。
目前,加密基本上都用在后端开发中,最常见的就是登录密码的加密。 接下来我们就为大家介绍几种加密方法。
1.md5加密
MD5加密后的数字有两种:16位和32位。 默认使用 32 位。 (16位实际上是32位串中间第9位到第24位的部分)以提高安全性。 根据业务需要,可以在md5中添加偏移量。 比如将指定位数的字符串与原始字符拼接起来。
1.1 使用方法
npm install --save js-md5
// 然后在页面中 引入
import md5 from 'js-md5';
md5('holle') // bcecb35d0a12baad472fbe0392bcc043
扩张
md5支持算法
md5.hex(''); // d41d8cd98f00b204e9800998ecf8427e
md5.array(''); // [212, 29, 140, 217, 143, 0, 178, 4, 233, 128, 9, 152, 236, 248, 66, 126]
md5.digest(''); // [212, 29, 140, 217, 143, 0, 178, 4, 233, 128, 9, 152, 236, 248, 66, 126]
md5.arrayBuffer(''); // ArrayBuffer
md5.buffer(''); // ArrayBuffer, deprecated, This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.
md5.base64('');
2.base64加密 2.1 使用方法
npm install --save js-base64
// 引入
let Base64 = require('js-base64').Base64
// 加密
Base64.encode('测试'); // 5bCP6aO85by+
Base64.encodeURI('测试'); // 5bCP6aO85by-
// 解密
Base64.decode('5bCP6aO85by+'); // 测试
// note .decodeURI() is unnecessary since it accepts both flavors
Base64.decode('5bCP6aO85by-'); // 测试
3.资源加密
前端js库:jsencrypt.js github地址:github.com/travist/jse...
后台:前端数据加密传输到后台php加密解密,后台露出来进行数据处理。 在项目开发过程中,为了保证数据的安全,需要对后端和前端数据传输过程中的数据进行加密和解密。
更安全和流行的加密方法是非对称加密(RSA)。 它的加密方法需要两个密钥:私钥(private key)和私钥(public key)。 公钥加密,私钥解密。
RSA加密规则
公钥(publicKey)进行加密,私钥(privateKey)进行解密。 不可逆,私钥(privateKey)加密,公钥(publicKey)解密。 说白了,前端和前端都需要使用私钥(publicKey)进行加密,使用公钥(privateKey)进行解密。
为什么是不可逆的呢? 众所周知,前端代码的安全性很差。 之所以称为公钥(privateKey),是因为它是私有的,不能公开,需要保证密钥的安全。 如果后端公钥(privateKey)被加密,则意味着公钥需要存储在后端,这样不安全,违背了保证数据安全的初衷。
RSA 双向加密揭秘
在开发过程中,我遇到了这样一个问题:前端不仅需要对传输到前端的数据进行加密,还需要对前端传回的加密数据进行解密。 因此,定义了两种数据加密和解密的方法。
导入后端JS库:jsencrypt.js
// RSA 解密
static decryptRSA(str: string) {
const encryptor = new JSEncrypt() // 新建JSEncrypt对象
const privateKey = "XXXX" // 私钥串
encryptor.setPrivateKey(privateKey)//设置私钥
const decrytStr = encryptor.decrypt(str)
return decrytStr
}
// RSA 加密
static encryptRSA(str: string) {
const encryptor = new JSEncrypt() // 新建JSEncrypt对象
const publicKey = ''; //公钥串
encryptor.setPublicKey(publicKey) // 设置公钥
const rsaPassWord = encryptor.encrypt(str)
return rsaPassWord
}
我相信你已经注意到了这个问题。 我们把所有的公钥(privateKey)和公钥(publicKey)放在后端代码中。 前端安全性较差,密钥对很容易获取,RSA加密也丢失。 价值。 那么如何解决这个问题呢?
通过前端通信,我们采用单向加密来泄密,也就是使用两组密钥来解决这一问题。 什么是单向加密?
后端定义了两对密钥:密钥对A和密钥对B。
私钥 公钥
公钥A
私钥A
公钥B
私钥B
后端保存:私钥A(privateKeyA)、公钥B(publicKeyB),前端保存:公钥A(publicKeyA)、私钥B(privateKeyB)。
这样才能保证虽然后端代码中都存在公钥(privateKeyB)和私钥(publicKeyA),但这两者不是一对,即使都收到了,也无法成功泄密。 也符合私钥(publicKey)加密和私钥(privateKey)解密的规则。 完美解决方案!
注意:该插件为res加密的最长字符串为117个字符。
有时在加密时,会遇到加密参数过长,难以加密的现象。 在源代码中添加以下代码,并通过调用 encryptLong 重新定义加密函数。
JSEncrypt.prototype.encryptLong = function(string) {
var k = this.getKey();
// var maxLength = (((k.n.bitLength()+7)>>3)-11);
var maxLength = 117;
try {
var lt = "";
var ct = "";
if (string.length > maxLength) {
lt = string.match(/.{1,117}/g);
lt.forEach(function(entry) {
var t1 = k.encrypt(entry);
ct += t1 ;
});
return hex2b64(ct);
}
var t = k.encrypt(string);
var y = hex2b64(t);
return y;
}
catch (ex) {
return false;
}
};
喜欢和支持php加密解密,手上留下余香,还有荣幸,动动小手发财,感谢所有掠食者留下的足迹。