在PowerShell中使用AES加密

在上一篇我们知道了,在不同的user account和workstations, 如何使用AES key去生成SecureString。我们需要去保护好Key,以免遭非法者解密数据保护。

在之前的例子中,我使用一个非常简单的16-byte 数组存储在脚本本身的主体。 这不是一个好的做法, 这和你密码用明文表示本质上是一样的。或者你可以在一个隔离的脚本里提前生成一个key。

作为一个例子,我已经建立了一个小脚本生成一个随机的16-byte数组。 我用System.Security.Cryptography.RNGCryptoServiceProvider 类随机生成的数据来填充一个字节数组。

Creating AES key with random data and export to file

$KeyFile = "\\SHSV2019\SharePath\AES.key"
$Key = New-Object Byte[] 16    #You can use 16, 24, or 32 for AES
[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($Key)
$Key | Out-File $KeyFile

Creating SecureString object

$PasswordFile = "\\SHSV2019\SharePath\Password.txt"
$KeyFile = "\\SHSV2019\SharePath\AES.key"
$Key = Get-Content $KeyFile
# $Password = "[email protected]" | ConvertTo-SecureString -AsPlainText -Force
$Password | ConvertFrom-SecureString -Key $Key | Out-File $PasswordFile

Creating PSCredential object

$User = "contoso\jason"
$PasswordFile = "\\SHSV2019\SharePath\Password.txt"
$KeyFile = "\\SHSV2019\SharePath\AES.key"
$Key = Get-Content $KeyFile
$MyCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, (Get-Content $PasswordFile | ConvertTo-SecureString -Key $Key)

1. 加域脚本

$User = "contoso\jason"
$PasswordFile = "\\SHSV2019\SharePath\Password.txt"
$KeyFile = "\\SHSV2019\SharePath\AES.key"
$Key = Get-Content $KeyFile
$MyCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, (Get-Content $PasswordFile | ConvertTo-SecureString -Key $Key)
Add-Computer -DomainName contoso.com -Credential $MyCredential

将上面的加域脚本另存为"Joindomain.PS1"通过右键执行"Run with PowerShell"

执行后系统提示需要重启生效。

2. 退域脚本

$User = "contoso\jason"
$PasswordFile = "\\SHSV2019\SharePath\Password.txt"
$KeyFile = "\\SHSV2019\SharePath\AES.key"
$Key = Get-Content $KeyFile
$MyCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, (Get-Content $PasswordFile | ConvertTo-SecureString -Key $Key)
Remove-Computer -UnjoinDomainCredential $MyCredential -PassThru -Verbose -Restart

将上面退域脚本另存为"Unjoindomain.ps1",右键执行“Run with PowerShell”

执行完毕,会自动重启,整个退域过程结束。

时间: 2024-10-07 23:42:13

在PowerShell中使用AES加密的相关文章

JAVA中使用AES加密解密

技术交流群: 233513714 /** * AES加密测试 * * @param str 加密参数 */ public void aesTest(String str) { log.info("[rsaTest获取请求:{}]", str); try { String encryptResult = AESUtil.encrypt(str, "123456"); log.info("[AES加密后的参数为:{}]", encryptResult

VUE中的 AES加密和解密

import CryptoJS from 'crypto-js/crypto-js' // 默认的 KEY 与 iv 如果没有给 const KEY = CryptoJS.enc.Utf8.parse('F697467B14B076F2') const IV = CryptoJS.enc.Utf8.parse('0102030405060708') /** * AES加密 :字符串 key iv 返回base64 */ export function Encrypt(word, keyStr,

python中的AES加密与解密

AES简介 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准.2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一. AES算法为最常见的对

nodejs与javascript中的aes加密

// var CryptoJS = require("crypto-js"); // var key = CryptoJS.enc.Utf8.parse("8NONwyJtHesysWpM"); var crypto = require('crypto'); var key = new Buffer('7y05R9qwKaIKgIHh4vAw19X1zuknR21Y', 'binary'); var iv = ""; var cryto_aes

在PHP中使用AES加密算法加密数据及解密数据

这个算法可以将数据加密后,储存起来,到需要用的时候,用之前加密的秘钥将之还原. 除了这个之外,还有AES这个算法能够将数据很好的加密起来,在传输过程中不容易被破解. 在PHP中,我们必须先安装好mcrypt这个模块,并且添加相应版本的扩展到php中. AES加密模式和填充方式有以下之中,但不是全部 复制代码代码如下: 算法/模式/填充                16字节加密后数据长度        不满16字节加密后长度AES/CBC/NoPadding                 16

关于CryptoJS中md5加密以及aes加密的随笔

最近项目中用到了各种加密,其中就包括从没有接触过得aes加密,因此从网上各种查,官方的一种说法: 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准.2

AES加密在IOS中的使用

现在做的App,因为考虑到安全性,所以用到了AES加密,以及配对安卓使用的AES加密. .h文件 #import <Foundation/Foundation.h> #import <CommonCrypto/CommonCryptor.h> #import <CommonCrypto/CommonKeyDerivation.h> #define AES_KEY @"[email protected]!*&y.)x#[;>" #defi

Python中crypto模块进行AES加密和解密

#coding: utf8 import sys from Crypto.Cipher import AES from binascii import b2a_hex, a2b_hex class prpcrypt(): def __init__(self, key): self.key = key self.mode = AES.MODE_CBC #加密函数,如果text不是16的倍数[加密文本text必须为16的倍数!],那就补足为16的倍数 def encrypt(self, text):

AES加密解密 Java中运用

AES全称 Advanced Encryption Standard, 高级加密算法,更加安全,可取代DES. Aes: package com.blog.d201706.encrypt; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.security.Key; public class Aes { /** * 加解密key */ private final Key keySpec;