我使用AES和salt String来加密我的'密码',使用我制作的java程序.(它使用AES对称加密)
用户设置要加密的消息,盐,迭代和密钥的16个字节.
如果我将它设置为使用大量的加密和解密迭代,比如255,这真的会使我的密码比1次迭代更安全吗?
我最近决定对我的密码使用更安全的密码。调用mc_encrypt($encrypt)方法返回加密的密码后,我对密码进行加密没有问题 。
通过调用进行解密时mc_decrypt($decrypt),该方法返回false。如您在mc_decrypt($decrypt)方法中所见,底部附近有一个if语句。我无法通过if语句。有谁知道我可以改变以获得$calcmac!==$mac真实的回报?谢谢
<?php
class Encrypt {
public $encryptionKey = 'xxxxxxx';
public function __construct() {
define('ENCRYPTION_KEY', $this->encryptionKey);
}
// Encrypt Function
public function mc_encrypt($encrypt){
$encrypt = serialize($encrypt);
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM);
$key = pack('H*', $this->encryptionKey);
$mac = hash_hmac('sha256', $encrypt, substr(bin2hex($key), -32));
$passcrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $encrypt.$mac, MCRYPT_MODE_CBC, $iv);
$encoded = base64_encode($passcrypt).'|'.base64_encode($iv);
return $encoded;
}
// Decrypt Function
public function mc_decrypt($decrypt){
$decrypt = explode('|', $decrypt);
$decoded = base64_decode($decrypt[0]);
$iv = base64_decode($decrypt[1]);
$key …Run Code Online (Sandbox Code Playgroud) 我正在使用CodeIgniter构建一个快速站点,目前我正在使用CI'加密'库.通过这里阅读听起来像我只是快速:
$this->encrypt->encode($secret_data);
Run Code Online (Sandbox Code Playgroud)
并在您想要使用它时执行此操作:
$this->encrypt->decode($encripted_string);
Run Code Online (Sandbox Code Playgroud)
然后CI和Mcrypt的魔力完成其余的工作.
好吧,我不确定在不知道后台发生了什么的情况下我可以睡觉.所以我有两个问题......
这是怎么回事?或者是否有一个很好的资源向我解释这是如何工作的,我可以阅读它?
这通常被认为是加密数据的安全方式吗?如果不是我应该在哪里看.
php encryption cryptography codeigniter encryption-symmetric
我正在尝试使用 加密密码mcrypt_encrypt()。它在 上工作正常localhost,但是当进入在线状态时,我的输出是""并且我收到此警告:
警告:mcrypt_encrypt():此算法不支持大小为 10 的密钥。仅支持尺寸为 16、24 或 32 的密钥
这是我正在使用的代码:
$text="thisismypassword123";
$salt="1234567824";
return trim (
base64_encode (
mcrypt_encrypt (
MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB, mcrypt_create_iv (
mcrypt_get_iv_size (
MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB
),
MCRYPT_RAND
)
)
)
);
Run Code Online (Sandbox Code Playgroud)
造成这种情况的原因是什么?我可以采取什么措施来解决这个问题?
php encryption mcrypt encryption-symmetric password-encryption
.NET Core上的SigningCredentials与.NET 4.0不同
cryptography claims-based-identity encryption-symmetric .net-core powerbi-embedded
我在混合加密实现过程中遇到上述错误。
按照https://en.wikipedia.org/wiki/Hybrid_cryptosystem
我只是停留在最后一步
我的代码是
private void button1_Click(object sender, EventArgs e)
{
try
{
CspParameters cspParams = new CspParameters { ProviderType = 1 };
RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(2048, cspParams);
string publicKey =lblPublicKey.Text = Convert.ToBase64String(rsaProvider.ExportCspBlob(false));
string privateKey = lblPrivateKey.Text= Convert.ToBase64String(rsaProvider.ExportCspBlob(true));
string symmericKey = txtBoxSymmetricKey.Text = "Kamran12";
txtEncryptedData.Text = EncryptData(txtInputData.Text, symmericKey);
txtBoxEncryptedSymmetricKey.Text = RSA_Encrypt(symmericKey, publicKey);
txtBoxDescryptedSymmetricKey.Text = RSA_Decrypt(txtBoxEncryptedSymmetricKey.Text, privateKey);
txtDecryptedData.Text = DecryptData(txtEncryptedData.Text, txtBoxDescryptedSymmetricKey.Text); //getting error length of the data to decrypt is invalid
}
catch (Exception exc)
{
}
}
public …Run Code Online (Sandbox Code Playgroud) c# cryptography encryption-asymmetric encryption-symmetric hybrid
我编写了一个操作十六进制值的bash脚本,我需要在两个十六进制数字之间进行异或运算。我的问题是,当我在 bash 提示符中尝试时,它可以工作并返回正确的值,但在脚本中该值是 false。
当 XOR 变量 $ExtendAuthKey 和 $IPAD 时,结果必须为: 181ad673a5d94f0e12c8894ea26381b363636363636363636363636363636363636363636363636363636363636363636363636363 636363636363636363636
但事实上我得到这个值:3906369333256140342
我不明白这种行为,如果你有解释或解决方案,我会接受,谢谢
看我的脚本:`
#!/bin/bash
AuthID=80001f8880e9bd0c1d12667a5100000000
IPAD=0x36363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636
OPAD=0x5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c
Ext0=0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
WholeMsgIn=0x3081800201033011020420dd06a7020300ffe30401050201030431302f041180001f8880e9bd0c1d12667a5100000000020105020120040475736572040c00000000000000000000000004003035041180001f8880e9bd0c1d12667a51000000000400a11e02046b4c5ac20201000201003010300e060a2b06010201041e0105010500
line=test
#Calcule AuthKey
AuthKey=$(snmpkey md5 $line $AuthID | grep auth | cut -d ' ' -f 2)
#Concat AuthKey + Ext0
ExtendAuthKey=$AuthKey${Ext0:2}
#Calcule de K1 = ExtendAuthKey XOR IPAD
K1=$(( $ExtendAuthKey ^ $IPAD ))
#Calcule de K2 = ExtendAuthKey XOR OPAD
K2=$(( $ExtendAuthKey ^ $OPAD ))
#Concat K1 + WholeMsgIn
Concat1=$K1$WholeMsgIn
#Calcul Hash Concat1
echo ${Concat1:2} > tempH.hex …Run Code Online (Sandbox Code Playgroud) 我希望加密音频软件插件上的许可证密钥。许可证密钥完整性的最大风险是小型破解者反编译代码并寻找加密密钥。我的解决方案是在代码中存储任意数字并将其提供给一种算法,该算法将混淆加密密钥,同时仍然允许我在项目之间区分密钥(我是自由职业者)。
我的问题是 - 每次播种 C++ 随机数生成器都会创建相同的伪随机加密密钥,还是在运行、库等之间会有所不同。如果它在操作系统之间有所不同,那很好,我只需要它在同一台计算机上的 SDK 和托管软件之间没有区别。
是否存在以下安全实现:
Guid original = Guid.NewGuid();
Guid inverted = MysteryImplementation(original, salt); // salt is some sort of input
Guid shouldBeOriginal = MysteryImplementation(inverted, salt);
Assert.AreEqual(original, shouldBeOriginal, "MysteryImplementation did no work");
编辑:
由于这个被投票(虽然我有点不确定为什么),我认为需要更多的背景:
在远处的某个地方,有一个应用程序,其中主键存储为GUID.在此应用程序中,这些GUID向Web客户端公开.
在我追求改善现状的过程中,我有一个想法,即将这些GUID与用户会话数据进行映射,以降低主键意外/恶意泄漏的风险.映射这些GUID具有额外的好处,它还可以更容易地实现GUID引用的那些对象的工作副本.
这就是我决定开始寻找"安全"方式来映射GUID的原因.
回答评论:
-Mapping应该与所有其他GUID相比保留全局唯一性(我不希望那些映射的GUID与现有的GUID冲突).
- 在此上下文中的"安全"意味着在不知道密码密钥(典型的加密请求,我认为转换映射的GUID应该具有规范化分布)的情况下,不可能找出原始GUID.
在该用例中,服务器向浏览器发送加密的blob,并且浏览器上的javascript随后从服务器请求解密密钥并将blob解密为可用内容.
有没有办法保护浏览器上的这个键免受书签或浏览器插件的攻击或用户在浏览器上单步调试javascript调试器?或至少使攻击者的问题稍微困难一些.
编辑:问题的上下文是EME规范中指定的HTML Video DRM.有一个ClearKey api是该标准的一部分,并且不需要来自WideVine或FairPlay等的封闭源插件.但是,正如多个响应指出的那样,ClearKey无法得到保护.(遗憾的是,这意味着使用propinent DRM插件).
我正在与客户进行数据交换集成,他们发送给我的数据使用他们的C#encrypt方法加密(如下).
我的应用程序运行PHP 5.3,我需要一个等效的代码来解密他们发送的数据.我有PHP代码,但它不能正确解密客户端数据.
很明显,我在加密/解密方法,IV键或其他方面犯了一些错误.谁能发现错误?
谢谢.
C#代码(来自我的客户):
using System;
using System.Security.Cryptography;
using System.Text;
using System.IO;
public class Program
{
public static void Main()
{
var text = "this is a plain string";
var enc = Program.Encrypt(text);
Console.WriteLine(enc);
Console.WriteLine(Program.Decrypt(enc));
}
public static string Encrypt(string clearText)
{
var EncryptionKey = "1234567890123456";
byte[] clearBytes = Encoding.Unicode.GetBytes(clearText);
using (Aes encryptor = Aes.Create())
{
byte[] IV = new byte[15];
var rand = new Random();
rand.NextBytes(IV);
Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, IV);
encryptor.Key = pdb.GetBytes(32); …Run Code Online (Sandbox Code Playgroud) encryption ×6
cryptography ×4
php ×4
c# ×3
aes ×2
.net-core ×1
algorithm ×1
bash ×1
bitwise-xor ×1
c++ ×1
codeigniter ×1
hybrid ×1
java ×1
javascript ×1
license-key ×1
mcrypt ×1
random ×1
xor ×1