复制内容之后运行,会把加密的内容粘贴到剪贴板,直接粘贴就像,自行修改密码。
会在运行的目录中生成历史文本及key。
解密是同样的方式。
加密如下
[Asm] 纯文本查看 复制代码 $plaintext = Get-Clipboard
#$加密密钥 = -join ((65..90) + (97..122) + (48..57) | Get-Random -Count 16 | % {[char]$_})#随机16位
$加密密钥 = "8IAOJ1M9a6AnK1Ze"
$key = [System.Text.Encoding]::UTF8.GetBytes("$加密密钥") # 8IAOJ1M9a6AnK1Ze
$iv = [System.Text.Encoding]::UTF8.GetBytes("EyXThqq44nRb8197")
# 创建AES加密器对象
$aes = New-Object System.Security.Cryptography.AesCryptoServiceProvider
$aes.Mode = [System.Security.Cryptography.CipherMode]::CBC
$aes.Padding = [System.Security.Cryptography.PaddingMode]::PKCS7
$aes.KeySize = 128
$aes.Key = $key
$aes.IV = $iv
# 创建加密器和解密器对象
$encryptor = $aes.CreateEncryptor()
$decryptor = $aes.CreateDecryptor()
# 加密文本
$plaintextBytes = [System.Text.Encoding]::UTF8.GetBytes($plaintext)
$encryptedBytes = $encryptor.TransformFinalBlock($plaintextBytes, 0, $plaintextBytes.Length)
$encryptedText = [System.Convert]::ToBase64String($encryptedBytes)
# 输出加密后的文本
$encryptedText | Set-Clipboard
$合成 = "内容:$($plaintext) 加密结果:$($encryptedText) 加密密钥:$($加密密钥) 加密向量:EyXThqq44nRb8197"
#$合成 | Set-Clipboard
Add-Content -Path .\log.txt -Value $合成
Clear-Content .\key.txt #清空key.txt
Add-Content -Path .\key.txt -Value $加密密钥
Write-Output "加密后的文本: $encryptedText $加密密钥"
解密如下:
[Asm] 纯文本查看 复制代码 $encryptedText = Get-Clipboard # 将加密后的文本替换为实际的加密结果
$加密密钥 = Get-Content .\key.txt
#$加密密钥 = "VMcQjEl5WSKyHCTN"
$key = [System.Text.Encoding]::UTF8.GetBytes($加密密钥)
$iv = [System.Text.Encoding]::UTF8.GetBytes("EyXThqq44nRb8197")
# 创建AES加密器对象
$aes = New-Object System.Security.Cryptography.AesCryptoServiceProvider
$aes.Mode = [System.Security.Cryptography.CipherMode]::CBC
$aes.Padding = [System.Security.Cryptography.PaddingMode]::PKCS7
$aes.KeySize = 128
$aes.Key = $key
$aes.IV = $iv
# 创建加密器和解密器对象
$encryptor = $aes.CreateEncryptor()
$decryptor = $aes.CreateDecryptor()
# 解密文本
$encryptedBytes = [System.Convert]::FromBase64String($encryptedText)
$decryptedBytes = $decryptor.TransformFinalBlock($encryptedBytes, 0, $encryptedBytes.Length)
$decryptedText = [System.Text.Encoding]::UTF8.GetString($decryptedBytes)
# 输出解密后的文本
#$processedText = $decryptedText -replace '。',"。`r"
$decryptedText | Set-Clipboard
Write-Output "解密后的文本: $decryptedText"
油猴脚本需要自己添加网站
我自己使用是用在outlook中,用于邮箱
注意:加密的内容必须是在p标签内并且加密结尾是=,然后只需要点击一下就可以了。
[Asm] 纯文本查看 复制代码 // ==UserScript==
// [url=home.php?mod=space&uid=170990]@name[/url] 解密
// [url=home.php?mod=space&uid=467642]@namespace[/url] ohao
// [url=home.php?mod=space&uid=1248337]@version[/url] 1.0
// @description 使用等号(=)解密选定的内容或通过单击“解密”按钮解密,并将Markdown转换为HTML
// [url=home.php?mod=space&uid=195849]@match[/url] [url]https://outlook.office.com/mail/inbox/id/[/url]*
// @match [url]https://outlook.live.com/mail/0/sentitems/id/[/url]*
// [url=home.php?mod=space&uid=609072]@grant[/url] none
// @require [url]https://cdn.bootcdn.net/ajax/libs/crypto-js/4.1.1/crypto-js.js[/url]
// @require [url]https://cdn.bootcdn.net/ajax/libs/showdown/1.9.1/showdown.min.js[/url]
// ==/UserScript==
(function() {
'use strict';
// 默认密钥
var defaultKey = CryptoJS.enc.Utf8.parse("8IAOJ1M9a6AnK1Ze");
// AES解密函数
function decryptAES(encryptedText, key) {
var iv = CryptoJS.enc.Utf8.parse("EyXThqq44nRb8197");
var decrypted;
try {
decrypted = CryptoJS.AES.decrypt(encryptedText, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
} catch (error) {
if (encryptedText.trim() === "") {
var newKey = prompt("输入解密密钥:");
if (newKey) {
return decryptAES(encryptedText, CryptoJS.enc.Utf8.parse(newKey));
}
}
return "解密错误";
}
return decrypted.toString(CryptoJS.enc.Utf8);
}
// Markdown转换为HTML
function markdownToHTML(markdownText) {
var converter = new showdown.Converter();
var html = converter.makeHtml(markdownText);
return html;
}
// 创建解密按钮
function createDecryptButton(contentElement) {
var button = document.createElement("button");
button.innerHTML = "Decrypt";
button.style.marginLeft = "5px";
button.addEventListener("click", function() {
var encryptedText = contentElement.textContent;
var key = prompt("输入解密密钥:");
if (key) {
var decryptedText = decryptAES(encryptedText, CryptoJS.enc.Utf8.parse(key));
if (decryptedText !== "解密错误") {
var html = markdownToHTML(decryptedText);
contentElement.innerHTML = html;
}
}
});
return button;
}
// 监听文档的鼠标抬起事件,如果有选择文本,则判断是否有等号进行解密或创建解密按钮
document.addEventListener("mouseup", function() {
var selectedText = window.getSelection().toString();
if (selectedText) {
var contentElement = window.getSelection().anchorNode.parentElement;
if (contentElement.tagName === "P") {
if (contentElement.textContent.includes("=")) {
var decryptedText = decryptAES(contentElement.textContent, defaultKey);
if (decryptedText !== "Decryption Error") {
var html = markdownToHTML(decryptedText);
contentElement.innerHTML = html;
}
// 移除Decrypt按钮
var decryptButton = contentElement.querySelector(".decrypt-button");
if (decryptButton) {
decryptButton.remove();
}
} else {
var button = createDecryptButton(contentElement);
button.classList.add("decrypt-button");
contentElement.appendChild(button);
}
}
} else {
// 取消选择文本时移除Decrypt按钮
var decryptButton = document.querySelector(".decrypt-button");
if (decryptButton) {
decryptButton.remove();
}
}
});
})();
方式,好像需要在powershell ise中运行
|