代码翻译小工具——后续
初衷
之前根据需要开发了一款*《全局钩子——代码翻译小工具》*的文章,后续收到了一些有建议性的反馈和在使用中的一些感受,所以做了一些升级。
README!!!
因为:
使用时会因为网络问题出现卡顿;
百度翻译引擎调整政策为每月5万字;
使用时会重复翻译相同内容,照成翻译资源浪费;
所以:
使用了线程去处理翻译过程,避免卡顿;
添加了腾讯机器翻译引擎,并添加ID和Key输入窗口(并在本地做了加密处理),可使其使用自己的翻译源;
添加了一些逻辑判断,检测到相同内容的翻译后,会从本地取出,减少浪费;
使用:
使用过程和之前一样,自定义的SourceId和SourceKey可以到百度或腾讯开发者网站自己申请,(当然也可以先用我的,不过超过了免费限制后,我可不会缴费。。。
攻坚
AES加密:(需要注意的密钥向量的个数和密钥长度要一致)
// An highlighted block
public class AESLock{#region singleprivate static object syncObj = new object();private static AESLock instance = null;private AESLock(){ }public static AESLock GetInstance(){lock (syncObj){if (instance == null){instance = new AESLock();}}return instance;}#endregion#region body//测试密钥向量 private readonly static byte[] MY_IV = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};//测试密钥private const string publicKey = "whttranslatelock";#endregion#region 成员/// <summary> /// AES加密算法 /// </summary> /// <param name="plainText">明文字符串</param> /// <returns>返回加密后的密文字节数组</returns> public string Encrypt(string text){byte[] bytes = Encoding.UTF8.GetBytes(text);bytes = Encrypt(bytes);string res = Convert.ToBase64String(bytes);return res;}/// <summary> /// AES解密 /// </summary> /// <param name="cipherText">密文字节数组</param> /// <returns>返回解密后的字符串</returns> public string Decrypt(string text){byte[] bytes = Convert.FromBase64String(text);bytes = Decrypt(bytes);string res = Encoding.UTF8.GetString(bytes);//去除尾部自动填充的无效字符res = res.TrimEnd('\0');return res;}#endregion#region 成员public byte[] Encrypt(byte[] data){//分组加密算法 SymmetricAlgorithm des = Rijndael.Create();//设置密钥及密钥向量 des.Key = Encoding.UTF8.GetBytes(publicKey);des.IV = MY_IV;byte[] cipherBytes;using (MemoryStream ms = new MemoryStream()){using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write)){cs.Write(data, 0, data.Length);cs.FlushFinalBlock();cipherBytes = ms.ToArray();//得到加密后的字节数组 //cs.Close();}//ms.Close();}return cipherBytes;}public byte[] Decrypt(byte[] data){//分组加密算法 SymmetricAlgorithm des = Rijndael.Create();//设置密钥及密钥向量 des.Key = Encoding.UTF8.GetBytes(publicKey);des.IV = MY_IV;byte[] decryptBytes = new byte[data.Length];using (MemoryStream ms = new MemoryStream(data)){using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read)){cs.Read(decryptBytes, 0, decryptBytes.Length);//cs.Close();}//ms.Close();}return decryptBytes;}#endregion}
总结
源码地址:https://github.com/Dream9898123/Translate.git
开盖及食:链接: https://pan.baidu.com/s/1dYPbMZWr4lAUqyBmjGhJZw 提取码: a355
代码翻译小工具——后续相关推荐
- python利器怎么编程-Python实现翻译小工具!几行代码搞定!装逼利器有没有!
一.背景 利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面 二.代码 进群:548377875 即可 ...
- python英语翻译-python制作英语翻译小工具代码实例
这篇文章主要介绍了python制作英语翻译小工具代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 用python爬虫可以制作英语翻译小工具.来 ...
- python自动翻译小工具_Python实现翻译小工具
一.背景 利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面. 二.代码 git源码地址 Python实现翻 ...
- 【青少年编程】黄羽恒:翻译小工具 -- 利用百度翻译
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 微信后台回复"资料下载&quo ...
- 【青少年编程】黄羽恒:翻译小工具 -- 利用有道翻译
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 微信后台回复"资料下载&quo ...
- 把python语言翻译出来_Python语言实现翻译小工具(Python打包成exe文件)
本文主要向大家介绍了Python语言实现翻译小工具(Python打包成exe文件),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 1.环境 windows10 python3.5 ...
- python制作小工具_利用Python制作翻译小工具
话不多说,直接上代码. Component文件: # coding:utf-8 from tkinter import * from tkinter import ttk from tkinter i ...
- python英语翻译-python制作英语翻译小工具
用python爬虫可以制作英语翻译小工具.来看下代码吧- import requests,json #函数封装 def translator(): session=requests.session() ...
- python制作翻译小软件_如何基于Python制作有道翻译小工具
这篇文章主要介绍了如何基于Python制作有道翻译小工具,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 该工具主要是利用了爬虫,爬取web有道翻译的 ...
最新文章
- 大数据高效复制的处理案例分析总结
- 自学python清单-python学习清单
- JZOJ 4932. 【NOIP2017提高组模拟12.24】B
- 将内存单元中小写字符改成大写字符
- java怎么注销cookie_java web中cookie的永久创建与撤销
- SQL2000中@@ERROR的使用提醒
- The 15th UESTC Programming Contest Preliminary H - Hesty Str1ng cdoj1551
- C++(22)--继承和派生
- 《Docker进阶与实战》——3.3节Docker image的组织结构
- VM14无法将网络更改为桥接状态:没有未桥接的主机网络适配器
- opencv无法打开源文件opencv2/opencv.hpp文件
- wex5链接mysql_【WeX5学习】 后端服务之访问数据库表
- esp8266 windows烧录问题
- 2020年11月软考网络规划设计师上午真题及答案解析
- java 二维码原理以及用java实现的二维码的生成、解码
- Pytorch报错:“freeze_support()“ line can be omitted if the program is not going to be frozen(已解决)
- 滴滴十大技术方向开源项目出炉!有点牛啊!
- 房地产业务学习 04 -房企信息化 谁忽悠了谁
- 对待“流氓”,要比流氓更“流氓”!
- Python:设置不显示Using TensorFlow backend及FutureWarning: Passing (type, 1) or ‘1type‘ as a synonym of typ