ln: DES,MD5,Blowfish

博客提及要学习一些算法,但未明确具体算法内容。

learn these algorithm

 

该文件汇总了标题所述的加密方法的操作源码,并考虑到加密数据的文件存放问题,避免了byte[]转string类型时的数据失真的bug;下面是演示部分代码演示结果: public static void main(String[] args) { try {//过程演示,普通的加解密操作 Eryptogram etg = new Eryptogram(); etg.debug = true; byte[] key = etg.getSecretKey(); String aa = "0123456789中文测试EnglishTest!%$#@!~~"; byte[] en = etg.encryptData(aa.getBytes(), key); /*********************************************************/ /*为了将加密数据写入文件但不出现错误,目前的方法是转为int类型进行存储*/ /*********************************************************/ int[] intTemp = new int[en.length/4]; for (int i = 0; i < intTemp.length; i++) { byte[] byteTemp = new byte[4]; byteTemp[0] = en[i*4+0]; byteTemp[1] = en[i*4+1]; byteTemp[2] = en[i*4+2]; byteTemp[3] = en[i*4+3]; intTemp[i] = etg.byteToint(byteTemp); // System.out.println("intTemp["+i+"]="+intTemp[i]); } /*********************************************************/ /*待提取文件内容后,将int转化为byte即可进行解密 */ /*********************************************************/ byte[] decodeTemp = new byte[intTemp.length*4]; for (int i = 0; i < intTemp.length; i++) { byte[] byteTemp = etg.intTobyte(intTemp[i]); decodeTemp[i*4+0] = byteTemp[0]; decodeTemp[i*4+1] = byteTemp[1]; decodeTemp[i*4+2] = byteTemp[2]; decodeTemp[i*4+3] = byteTemp[3]; } byte[] de = etg.decryptData(decodeTemp, key); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } try {//MD5非对称加密 Eryptogram etg = new Eryptogram(); System.out.println("对‘01234567’进行MD5加密后的结果:"+etg.encrypt("01234567")); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } 结果: 生成密钥:6B:58:23:40:43:0B:F4:9D 加密前的字符串:0123456789中文测试EnglishTest!%$#@!~~ 加密前的二进串:30:31:32:33:34:35:36:37:38:39:D6:D0:CE:C4:B2:E2:CA:D4:45:6E:67:6C:69:73:68:54:65:73:74:21:25:24:23:40:21:7E:7E 加密后的二进串:72:83:1D:0A:BF:F0:EB:81:DE:B2:DD:58:CA:EA:4F:7B:8C:9F:98:13:01:99:F0:F4:48:6B:1E:8F:17:D2:3E:DF:9B:C1:90:39:D5:91:6D:F8 解密前的信息:72:83:1D:0A:BF:F0:EB:81:DE:B2:DD:58:CA:EA:4F:7B:8C:9F:98:13:01:99:F0:F4:48:6B:1E:8F:17:D2:3E:DF:9B:C1:90:39:D5:91:6D:F8 解密后的二进串:30:31:32:33:34:35:36:37:38:39:D6:D0:CE:C4:B2:E2:CA:D4:45:6E:67:6C:69:73:68:54:65:73:74:21:25:24:23:40:21:7E:7E 解密后的字符串:0123456789中文测试EnglishTest!%$#@!~~ 对‘01234567’进行MD5加密后的结果:2e9ec317e197819358fbc43afca7d837
<think>我们正在解决两个问题: 1. 升级pip虚拟环境时遇到“外部管理环境”错误 2. 执行ln命令时出现“无效选项”错误 根据用户提供的引用之前的对话,我们逐步分析: 问题1:升级pip虚拟环境时遇到“外部管理环境”错误 这种错误通常发生在系统检测到pip环境被多个工具管理(如系统包管理器apt、yum或conda等)时。在虚拟环境中,我们期望环境是隔离的,所以应该使用虚拟环境内的pip。 之前的回答已经给出了一些方法,但用户现在提供了新的引用信息: 引用[1]:尝试用python2指定pip安装,但提示没有pip模块。这说明系统可能没有为python2安装pip,或者安装不正确。 引用[2]:关于virtualenvwrapper的命令,说明用户可能在使用虚拟环境。 引用[3]:提醒备份重要文件环境配置,在卸载Python前。 引用[4]:在centos7上配置nginx+python3+django,用户可能是用虚拟机(如VirtualBox)练习。 针对第一个问题,我们可以: - 确保在虚拟环境中操作(使用workon激活,或者source激活) - 使用`python -m pip`而不是直接使用`pip`命令,以避免路径混淆 - 如果虚拟环境中没有pip,需要先安装pip 问题2:执行ln命令时出现“无效选项”错误 ln命令是创建链接的命令,常见的无效选项可能是由于选项拼写错误或者选项在特定系统上不可用(例如,LinuxmacOS的ln选项可能有差异)。 常见的ln命令选项: -s: 创建符号链接(软链接) -f: 强制创建,覆盖已有文件 例如:`ln -s /path/to/file linkname` 如果出现无效选项,检查: - 是否使用了错误的选项(比如大小写错误,或者多写了空格) - 是否在不同的系统上使用了不兼容的选项(比如在macOS上使用Linux特有的选项) 由于用户提到是在CentOS(Linux)上,所以通常选项是通用的。但注意,如果命令是从网上复制的,可能包含不可见的特殊字符(如中文空格、破折号等)。 结合用户引用[4],用户可能是在CentOS虚拟机上进行操作。 解决方案步骤: 问题1的解决步骤: 步骤1:激活虚拟环境 使用virtualenvwrapper: workon your_env_name 或者如果是venv: source /path/to/venv/bin/activate 步骤2:检查虚拟环境中pip是否存在 python -m pip --version 如果提示没有pip,则先安装pip: curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python get-pip.py 步骤3:在虚拟环境中升级pip python -m pip install --upgrade pip 如果遇到权限问题,不要使用sudo(因为虚拟环境不需要sudo权限)。 问题2的解决步骤: 步骤1:检查ln命令的选项是否写错 查看帮助:`ln --help` 检查是否有拼写错误,比如把`-s`写成了`-S`(大小写)或者`&mdash;s`(长破折号)等。 步骤2:检查命令中是否有不可见字符 尝试重新手动输入命令,或者使用`cat -A`查看命令文件(如果是脚本的话)。 步骤3:检查系统ln命令是否被篡改 使用`which ln`查看ln的位置,通常是`/bin/ln`,然后检查其完整性(例如,md5sum与其他相同系统比较)。 步骤4:确认命令格式 正确的符号链接命令:`ln -s 源文件 目标链接文件` 例如:`ln -s /usr/bin/python3 /usr/bin/python` 注意:如果目标链接文件已经存在,需要使用`-f`选项覆盖,即`ln -sf`。 综合两个问题,用户可能是在配置环境的时候遇到这些问题。 下面我们将按照要求写出回答,注意格式要求(包括LaTeX格式引用标识)。 </think>### 解决升级pip时的"外部管理环境"错误ln命令"无效选项"错误 #### 一、升级pip时"外部管理环境"错误的解决方案 此错误通常发生在系统检测到多个Python环境管理工具冲突时(如系统APT/YUM与虚拟环境pip),请按顺序尝试: 1. **强制使用虚拟环境内的pip** 激活虚拟环境后使用模块调用方式: ```bash python -m pip install --upgrade pip ``` 而非直接调用`pip install --upgrade pip`[^1][^3] 2. **修复pip路径冲突** ```bash # 检查所有pip路径 which -a pip # 删除非当前虚拟环境的pip实例(示例) sudo rm /usr/local/bin/pip # 谨慎操作! ``` 3. **重建虚拟环境(终极方案)** ```bash # 删除旧环境 rm -rf venv_name # 创建新环境 python -m venv venv_name source venv_name/bin/activate # 激活 ``` #### 二、ln命令"无效选项"错误的解决方案 此错误通常由选项拼写错误或跨平台命令差异导致: 1. **检查选项拼写** Linux的`ln`命令常用选项: ```bash ln -s /源文件路径 /目标链接路径 # -s 创建符号链接 ln -f /源文件 /目标链接 # -f 强制覆盖 ``` 常见错误: - 将`-s`误写为`--symbolic`(Linux不支持长选项) - 混淆大小写(如`-S`代替`-s`) 2. **验证命令完整性** 使用`type ln`查看命令路径,确保未调用别名: ```bash # 示例输出 ln is /usr/bin/ln ``` 3. **跨平台注意事项** 如果在Windows子系统(WSL)执行Linux命令: ```bash # 错误示例(Windows路径格式) ln -s C:\Python\venv /opt/venv # 正确格式(WSL路径) ln -s /mnt/c/Python/venv /opt/venv ``` --- ### 关键预防措施 1. **环境隔离** 始终在虚拟环境中操作: ```bash # 使用virtualenvwrapper mkvirtualenv my_env && workon my_env # 创建并激活[^2] ``` 2. **命令验证** 执行前用`man ln`查看手册: ```bash # 验证选项支持性 man ln | grep -A5 '\-\-symbolic' # 检查长选项 ``` 3. **备份机制** 关键操作前备份环境配置: ```bash # 备份虚拟环境 cp -r venv_name venv_backup tar -czf pip_env_backup.tar.gz ~/.pip/ # 打包配置[^3] ``` > 💡 **原理说明**: > 当Python检测到`/usr/lib/pythonX.Y/dist-packages`等系统管理路径时,会触发"外部管理环境"警告。使用`python -m pip`可绕过环境变量直接调用当前解释器关联的pip[^1][^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值