有关Cipher命令加密的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有关Cipher命令加密的问题相关的知识,希望对你有一定的参考价值。
使用cipher命令加密文件夹后,文件夹名称变成了绿色,不过文件夹还能打开,这是为什么啊,都已经加过密了,怎么还能打开啊,跪求DOS高手给小弟支支招,小弟感激不尽!!!!
--对文件进行EFS加密和解密以及应用实例cipher.exe命令格式:
CIPHER[/E|/D][/S:directory][/A][/I][/F][/H][pathname[...]]
CIPHER /K
CIPHER /R:filename
参数介绍:
/A 使用于目录和文件
/D 解密指定的目录
/E 加密指定的目录
/F 强制加密所有指定的对象
/H 显示具有隐藏、系统属性的文件
/I 出现错误后,继续执行指定操作
/K 为运行 cipher 的用户创建新文件加密密钥
/R 生成一个 EFS 恢复代理密钥和证书,然后将它写入一个 .PFX 文件(含有证书和密钥)和一个 .CER 文件(只含有证书)中
/S 在指定目录及其所有子目录的目录中执行指定操作
应用实例:
一、加密目录文件夹和文件
1.加密F盘下的efs目录
点击“开始→运行”,在运行对话框中输入“CMD”命令,弹出“命令提示符”窗口,进入到“F:\\> ”提示符下,然后运行“cipher /e efs”命令,接着系统提示“正在加密 f:\\ 中的目录,efs [OK],一个目录中一个目录被加密”信息后,完成“efs”目录的加密操作。
如果要加密efs目录下的所有子目录,运行“cipher /e /s:efs”命令即可。
2.加密F盘下efs1目录中的“ichat.txt”文件
在命令提痉�翱谥性诵小瘫ipher /e /a efs1\\ichat.txt”命令后,系统提示“ichat.txt[OK],1 个目录中的 1 个文件(或目录)已被加密”信息后,完成对ichat.txt文件的加密。
如果要加密该目录下的所有文件,运行“cipher /e /a efs1\\*”命令即可。
二、查询加密目录和加密文件
使用cipher.exe命令可以查询系统中哪些目录和文件被加密,如查询F盘中的efs目录是否被加密,在命令提示符窗口中输入“cipher efs”命令,然后系统提示“E efs”信息,说明efs目录已被加密。
要查询efs目录中哪些文件已被加密,运行“cipher efs\\*”命令即可。
三、解密目录文件夹
在命令提示符窗口中运行“cipher/d efs”命令后,就将efs目录解密。要解密efs目录下的所有子目录运行“cipher/d/s:efs”命令即可。
要解密efs1目录ichat.txt文件,运行“cipher/d/a efs1\\ichat.txt”命令,解密该目录所有文件,运行“cipher /d /a efs1\\*”命令即可。
四、导出证书和私匙
在命令提示符下运行“ cipher /R:rtj”,其中rtj为导出文件的文件名,接着系统提示“请键入密码来保护 .PFX 文件:”,两次输入密码后,就在所在目录下生成“rtj.CER”和“rtj.PFX”这两个文件。其中rtj.CER为用户证书,rtj.PFX为证书和密钥文件。
一旦用户丢失了证书和密钥无法解密EFS加密文件,只要将rtj.CER和rtj.PFX文件导入即可。 参考技术A 是可以打开的,只有更换用户或者重装系统等情况才会打不开。
如果想这个用户打不开,你可以先备份一下用户证书,然后从系统中把用户证书删除,这样就打不开了,打开了也是乱码
Vigenere Cipher使用命令行提示
我正在尝试编写一个读入的Vigenere密码(-e加密,-d解密),关键字(加密期间使用),原始邮件来自的文本文件,以及另一个文本文件。所有来自命令行参数的加密/解密消息都被输出。我遇到了如何从命令行以字符串形式读取所有内容并使用字符进行实际加密的问题。我在vigenere密码上找到了很多其他程序,但没有一个程序从命令行读入所有参数。这是我的(未完成的)代码。
#include<iostream>
#include<string>
#include<fstream>
#include<sstream>
using namespace std;
char encipher(char key, char plain);
char decipher(char key, char cipher);
int main(int argc, char* argv[]){
ifstream inFile(argv[3]);
ofstream outFile(argv[4]);
string key = argv[2];
for (int i = 0; i < argc; i++){
string arg = argv[i];
if (arg == "-e"){
inFile.open(arg.c_str());
string plain = ;
encipher(key, plain);
}
else if (arg == "-d"){
inFile.open(arg.c_str());
decipher(key, cipher);
}
}
char encipher(char key, char plain){
for (int i = 0; i < key.size(); i++){
if (key[i] >= 'A' && key[i] <= 'Z')
key += key[i];
else if (key[i] >= 'a' && key[i] <= 'z')
key += key[i] + 'A' - 'a';
return key;
}
}
char decipher(char key, char cipher){
for (int i = 0; i < key.size(); i++){
if (key[i] >= 'A' && key[i] <= 'Z')
key -= key[i];
else if (key[i] >= 'a' && key[i] <= 'z')
key -= key[i] + 'A' - 'a';
}
}
答案
尝试使用strcmp而不是直接比较两个字符串。在
if (arg == "-e")
和
else if (arg == "-d")
以上是关于有关Cipher命令加密的问题的主要内容,如果未能解决你的问题,请参考以下文章