windows自带加密解密工具cipher 教程

首先进入命令行输入:  cipher /?

>cipher /?
显示或更改 NTFS 分区上的目录[文件]的加密。

  CIPHER [/E | /D | /C]
         [/S:directory] [/B] [/H] [pathname [...]]

  CIPHER /K [/ECC:256|384|521]

  CIPHER /R:filename [/SMARTCARD] [/ECC:256|384|521]

  CIPHER /U [/N]

  CIPHER /W:directory

  CIPHER /X[:efsfile] [filename]

  CIPHER /Y

  CIPHER /ADDUSER [/CERTHASH:hash | /CERTFILE:filename | /USER:username]
         [/S:directory] [/B] [/H] [pathname [...]]

  CIPHER /FLUSHCACHE [/SERVER:servername]

  CIPHER /REMOVEUSER /CERTHASH:hash
         [/S:directory] [/B] [/H] [pathname [...]]

  CIPHER /REKEY [pathname [...]]

    /B        如果遇到错误则中止。在默认情况下,即使遇到错误,CIPHER
              也会继续执行。
    /C        显示关于加密文件的信息。
    /D        解密指定的文件或目录。
    /E        加密指定的文件或目录。会标记目录,这样随后添加的文件就会
              被加密。
              如果父目录没有被加密,则当修改加密的文件时该文件将被解密。
              建议你给此文件和父目录加密。
    /H        用隐藏或系统属性显示文件。
              在默认情况下,会忽略这些文件。
    /K        创建新的证书和密钥以便使用 EFS。
              如果选择了此选项,会忽略所有其他选项。

              注意: 在默认情况下,/K 会创建符合当前组策略的证书和密钥。
                    如果指定了 ECC,则会使用提供的密钥大小创建自签名的
                    证书。

    /N        此选项只能与 /U 使用。这将阻止更新密钥。
              此选项用于查找本地磁盘上所有加密文件。
    /R        生成一个 EFS 恢复密钥和证书,然后将它们写入一个 .PFX 文件
              (包含证书和私钥)和一个 .CER 文件(只包含证书)。管理员可以向
              EFS 恢复策略添加 .CER 内容,为用户创建恢复密钥并导入 .PFX
              来恢复单独的文件。
              如果指定 SMARTCARD,则会将恢复密钥和证书写入智能卡。
              生成 CER 文件(只包含证书)。
              未生成 PFX 文件。

              注意: 在默认情况下,/R 会创建 2048 位 RSA 恢复密钥和证书。
                    如果指定了 ECC,则它必须遵循 256、384 或 521 的密钥大小。

    /S        在给定目录以及其中的所有文件和子目录上执行指定的操作。
    /U        尝试包括本地磁盘上所有加密的文件。如果用户的文件加密密钥
              或恢复密钥改变,这会将其更新为当前的密钥。除了 /N 外,
              此选项不能与其他选项一起使用。
    /W        从整个卷上所有没有使用的磁盘空间删除数据。如果选择了此选项,
              会忽略其他选项。指定的目录可以位于本地卷上的任意位置。
              如果它是装入点或指向另一个卷上的目录,此卷上的数据将被删除。

    /X        将 EFS 证书和密钥备份成文件的文件名。如果提供了 EFS 文件,
              将会备份当前用户的、用于加密此文件的证书。否则,将会备份用户
              当前的 EFS 证书和密钥。
    /Y        在本地电脑上显示当前的 EFS 证书缩略图。
    /ADDUSER  向指定的加密文件中添加用户。如果提供了 CERTHASH,密码将搜索
              带有此 SHA1 哈希的证书。
              如果提供了 CERTFILE,密码将从文件中提取证书。如果提供了
              USER,密码将尝试在 Active Directory 域服务中查找用户的证书。

    /FLUSHCACHE
              清除指定服务器上的呼叫用户的 EFS 密钥缓存。
              如果未提供服务器名称,密码会清除本地计算机上的用户密钥缓存。
    /REKEY    更新指定的加密文件以使用配置的 EFS 当前密钥。
    /REMOVEUSER     从指定文件中删除用户。CERTHASH 必须是要删除的证书的
              SHA1 哈希。

    directory 目录路径。
    filename  没有扩展名的文件名。
    pathname  指定一个模式、文件或目录。
    efsfile   加密的文件路径。

    不用参数时,CIPHER 显示当前目录和它包含文件的加密状态。你可以使用几个目录
    名和通配符。多个参数之间必须有空格。














JDK 17 自带了多种加密算法,可以通过Java标准库中的 `javax.crypto` 包进行实现。下面是一个使用 JDK 17 自带的 AES 算法进行加密和解密的实现代码: ```java import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.StandardCharsets; import java.security.SecureRandom; public class AESEncryptionExample { private static final String ALGORITHM = "AES"; private static final int KEY_SIZE = 128; public static byte[] encrypt(String plainText, String key) throws Exception { byte[] keyBytes = key.getBytes(StandardCharsets.UTF_8); byte[] plainTextBytes = plainText.getBytes(StandardCharsets.UTF_8); // Create a secret key from the given key bytes SecretKeySpec keySpec = new SecretKeySpec(keyBytes, ALGORITHM); // Initialize the cipher with the secret key and encrypt mode Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(Cipher.ENCRYPT_MODE, keySpec); // Encrypt the plain text byte[] encryptedTextBytes = cipher.doFinal(plainTextBytes); return encryptedTextBytes; } public static String decrypt(byte[] encryptedText, String key) throws Exception { byte[] keyBytes = key.getBytes(StandardCharsets.UTF_8); // Create a secret key from the given key bytes SecretKeySpec keySpec = new SecretKeySpec(keyBytes, ALGORITHM); // Initialize the cipher with the secret key and decrypt mode Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(Cipher.DECRYPT_MODE, keySpec); // Decrypt the encrypted text byte[] decryptedTextBytes = cipher.doFinal(encryptedText); return new String(decryptedTextBytes, StandardCharsets.UTF_8); } public static String generateKey() throws Exception { KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM); SecureRandom secureRandom = new SecureRandom(); keyGenerator.init(KEY_SIZE, secureRandom); SecretKey secretKey = keyGenerator.generateKey(); byte[] keyBytes = secretKey.getEncoded(); return new String(keyBytes, StandardCharsets.UTF_8); } } ``` 这个实现包括了 AES 加密和解密的方法,使用时需要提供明文、密钥,或者密文和密钥。`generateKey` 方法可以生成一个随机的 AES 密钥,可以用于加密和解密。在实际使用中,需要注意密钥的生成和管理,以及使用恰当的加密算法和模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值