初衷

之前根据需要开发了一款*《全局钩子——代码翻译小工具》*的文章,后续收到了一些有建议性的反馈和在使用中的一些感受,所以做了一些升级。

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

代码翻译小工具——后续相关推荐

  1. python利器怎么编程-Python实现翻译小工具!几行代码搞定!装逼利器有没有!

    一.背景 利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面 二.代码 进群:548377875    即可 ...

  2. python英语翻译-python制作英语翻译小工具代码实例

    这篇文章主要介绍了python制作英语翻译小工具代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 用python爬虫可以制作英语翻译小工具.来 ...

  3. python自动翻译小工具_Python实现翻译小工具

    一.背景 利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面. 二.代码 git源码地址 Python实现翻 ...

  4. 【青少年编程】黄羽恒:翻译小工具 -- 利用百度翻译

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 微信后台回复"资料下载&quo ...

  5. 【青少年编程】黄羽恒:翻译小工具 -- 利用有道翻译

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 微信后台回复"资料下载&quo ...

  6. 把python语言翻译出来_Python语言实现翻译小工具(Python打包成exe文件)

    本文主要向大家介绍了Python语言实现翻译小工具(Python打包成exe文件),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 1.环境 windows10 python3.5 ...

  7. python制作小工具_利用Python制作翻译小工具

    话不多说,直接上代码. Component文件: # coding:utf-8 from tkinter import * from tkinter import ttk from tkinter i ...

  8. python英语翻译-python制作英语翻译小工具

    用python爬虫可以制作英语翻译小工具.来看下代码吧- import requests,json #函数封装 def translator(): session=requests.session() ...

  9. python制作翻译小软件_如何基于Python制作有道翻译小工具

    这篇文章主要介绍了如何基于Python制作有道翻译小工具,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 该工具主要是利用了爬虫,爬取web有道翻译的 ...

最新文章

  1. 大数据高效复制的处理案例分析总结
  2. 自学python清单-python学习清单
  3. JZOJ 4932. 【NOIP2017提高组模拟12.24】B
  4. 将内存单元中小写字符改成大写字符
  5. java怎么注销cookie_java web中cookie的永久创建与撤销
  6. SQL2000中@@ERROR的使用提醒
  7. The 15th UESTC Programming Contest Preliminary H - Hesty Str1ng cdoj1551
  8. C++(22)--继承和派生
  9. 《Docker进阶与实战》——3.3节Docker image的组织结构
  10. VM14无法将网络更改为桥接状态:没有未桥接的主机网络适配器
  11. opencv无法打开源文件opencv2/opencv.hpp文件
  12. wex5链接mysql_【WeX5学习】 后端服务之访问数据库表
  13. esp8266 windows烧录问题
  14. 2020年11月软考网络规划设计师上午真题及答案解析
  15. java 二维码原理以及用java实现的二维码的生成、解码
  16. Pytorch报错:“freeze_support()“ line can be omitted if the program is not going to be frozen(已解决)
  17. 滴滴十大技术方向开源项目出炉!有点牛啊!
  18. 房地产业务学习 04 -房企信息化 谁忽悠了谁
  19. 对待“流氓”,要比流氓更“流氓”!
  20. Python:设置不显示Using TensorFlow backend及FutureWarning: Passing (type, 1) or ‘1type‘ as a synonym of typ

热门文章

  1. 关于LibLinear使用总结
  2. (DDIA)数据存储与检索(一)
  3. fastadmin中使用 x-editable
  4. Android开发学习心得体会
  5. ajax上传文件到后端
  6. 8051单片机的内核的结构及运行过程解析
  7. 极限存在准则 两个重要极限——“高等数学”
  8. 摩拜单车发免费月卡,会成中小玩家的噩梦吗?
  9. 惠普 战66二代 拆机笔记——扩展硬盘和内存
  10. ocr图片识别文字工具笔记(包括汉王)