我有兴趣使用Taylor Hornby(又名Defuse)的PHP密码散列方法(PHP兼容版本),我在这里找到:https://github.com/defuse/password-hashing
我问这个是因为不同的托管公司提供不同的PHP版本和不同的Linux版本,这就是为什么我害怕实现这种技术可能在我的开发服务器中工作得很好,但无法在生产服务器中正常工作.
php encryption cryptography password-protection password-hash
我收到了一个包含用户和密码的文件,格式为:$id$salt$hashed。
其中 ID 代表加密类型,id=1 代表 FreeBSD 风格的 MD5。
有一个例子,其中我知道密码=“alice”
jsmith: $1$kDHTx$WKRXXT1P7UtjvU7CQ9eWs/:10063:0:99999:7:::
Run Code Online (Sandbox Code Playgroud)
所以我用Python做了这个来检查
import hashlib
passw='alice'
salt='kDHTx'
hashed= hashlib.md5(salt+passw).hexdigest()
print('What i get is: '+hashed)
print('What i should: '+'WKRXXT1P7UtjvU7CQ9eWs')
Run Code Online (Sandbox Code Playgroud)
但我什至没有得到正确的格式:
What i get is: ba359e6dd36371c4dc5c187aac11e0d8
What i should: WKRXXT1P7UtjvU7CQ9eWs
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?甚至从一开始就理解错误?
我正在使用PHP.我想要一个安全快速的密码加密系统.散列密码一百万次可能更安全,但也更慢.如何在速度和安全性之间取得良好的平衡?我想知道php中最好的加密方法以及如何应用它.
我正在尝试将AES解密函数从JavaScript转换为PHP脚本.忽略缩进以便于阅读.
var enc = 'EK/tvL3RsjOY1j82ILXv7W10bEU83JeaiBhlLmcZIrk=';
var key = 'FSHcT+sfRO/siok2ooweuA==' ;
var y = CryptoJS.AES.decrypt({ciphertext: CryptoJS.enc.Base64.parse(enc)},
CryptoJS.enc.Base64.parse(key),
{iv: CryptoJS.enc.Hex.parse("2323232323232323")});
var dec = y.toString(CryptoJS.enc.Utf8);
Run Code Online (Sandbox Code Playgroud)
在PHP中我试过了
$iv = mcrypt_create_iv(16, '2323232323232323');
$enc = 'EK/tvL3RsjOY1j82ILXv7W10bEU83JeaiBhlLmcZIrk=';
$key = 'FSHcT+sfRO/siok2ooweuA==' ;
$dec = rtrim((mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $enc, MCRYPT_MODE_CBC, $iv)), "\0\3");
Run Code Online (Sandbox Code Playgroud)
在Javascript解密工作正常,但当我执行PHP它给我奇怪的字符.
我在想一种创建数字签名的方法.我需要这个,因为一些文件需要由授权用户签署,就像授权用户一样,并且接收用户必须看到它来自授权,并且如果发生争议,发布的用户必须验证它是他的文件.
为此,我试图在图像中上传具有实际签名的图像.
问题:我可以从签名图像中获取唯一值吗?
我想从图像中获取独特的价值,然后openssl_sign使用签名图像中加密形式的唯一值作为私钥.
通过这种方式,发布用户可以签名并验证它是他的文件.但是接收用户将需要一个键来打开文件.
问题:我可以向用户提供密钥(只有接收用户可用的密钥)才能打开该加密文件吗?
我搜索过但很难找到这些东西.请解释这些事情,如果我的逻辑错误,请更好地了解.
谢谢
我创建了一个注册表格,处理如下:
function register_user() {
global $conn;
$name = sanitize($_POST['name']);
$email = sanitize($_POST['email']);
$password = sanitize($_POST['password']);
$salt = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
$saltedPW = $password . $salt;
$hashedPW = hash('sha256', $saltedPW);
mysqli_query($conn, "INSERT INTO users (name, email, password, salt) VALUES ('$name', '$email', '$hashedPW', '$salt')");
Run Code Online (Sandbox Code Playgroud)
然后按如下方式处理登录表单:
function login($email, $password) {
global $conn;
$user_id = user_id_from_username($email);
$query = mysqli_query($conn, "SELECT salt FROM users WHERE email = '$email'");
$row1 = mysqli_fetch_assoc($query);
$salt = $row1['salt'];
$saltedPW = $password . $salt;
$hashedPW = hash('sha256', $saltedPW);
$result = mysqli_query($conn, …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
我正在与客户进行数据交换集成,他们发送给我的数据使用他们的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) 我该如何解开sha512?任何人帮我解开这段代码?
我有这个代码:
password_hash(base64_encode( hash('sha512','e4cefc2b2d9fd250c8e526770c2841b4bd9e1f7509ebbd13f997151153c2c86a69a2f28d0f4e9b23e9f2fc31f0103b5a4fae2ad9f1706845ea9b817517943aa2', true) ), PASSWORD_DEFAULT );
Run Code Online (Sandbox Code Playgroud)
数据库存储值:
$password = e4cefc2b2d9fd250c8e526770c2841b4bd9e1f7509ebbd13f997151153c2c86a69a2f28d0f4e9b23e9f2fc31f0103b5a4fae2ad9f1706845ea9b817517943aa2;
Run Code Online (Sandbox Code Playgroud) php ×9
encryption ×5
cryptography ×4
aes ×2
mysql ×2
c# ×1
codeigniter ×1
cryptographic-hash-function ×1
hash ×1
javascript ×1
mcrypt ×1
md5 ×1
passwords ×1
python ×1
salt ×1
security ×1
sha256 ×1