盐:可以是任何东西.
工作因素:可以是任何东西.
以下所有内容都生成相同的哈希!
$pad = base64_decode('/gB=');
$data = array(
'LegitimatePayload',
'LaterSwitchedToMaliciousPayload',
'Abracadabra',
'hatIsGoingOn',
'CanBeAlmostAnything',
);
foreach($data as $str){
echo crypt($pad.$str, '$2a$04$AnySaltHere')."<br>\n";
}
Run Code Online (Sandbox Code Playgroud)
输出:
$2a$04$AnySaltHere$$$$$$$$$$.m/QKi19jyBmSuP2VMcVuFRw.weCNRBa
$2a$04$AnySaltHere$$$$$$$$$$.m/QKi19jyBmSuP2VMcVuFRw.weCNRBa
$2a$04$AnySaltHere$$$$$$$$$$.m/QKi19jyBmSuP2VMcVuFRw.weCNRBa
$2a$04$AnySaltHere$$$$$$$$$$.m/QKi19jyBmSuP2VMcVuFRw.weCNRBa
$2a$04$AnySaltHere$$$$$$$$$$.m/QKi19jyBmSuP2VMcVuFRw.weCNRBa
$2a$04$AnySaltHere$$$$$$$$$$.m/QKi19jyBmSuP2VMcVuFRw.weCNRBa
Run Code Online (Sandbox Code Playgroud)
编辑:
这是一个字符串,它具有相同的前两个字节但具有不同的散列:
base64_decode('/ gBQyoK71jVY/J7QuBNJuFdxyf2eTBCs42chkx6ZvpJYszpzg ===')
如果php在第一个NUL字节处停止,那么你如何解释这个?
美好的一天!前几天,我的一位客户向我发送了一份来自其他人的源代码,这种代码以我以前从未遇到的方式加密.我们都不明白为什么..
\x3c\x21DOCT\x59\x50\x45\x20\x68\x74\x6d\x6c\x20PUB\x4c\x49C
\x22\x2d\x2f\x2fW\x33\x43\x2f/\x44\x54\x44\x20\x58HTM\x4c\
Run Code Online (Sandbox Code Playgroud)
这是它的一小部分,它一直在继续.从我设法组建的角色,我可以看到它是php和......就是这样......有人可以告诉我这是什么类型的加密?提及:我在谷歌搜索模型,但没有找到我的问题的结果.
这是我的密码加密代码:
// Create a 256 bit (64 characters) long random salt
// Let's add 'something random' and the username
// to the salt as well for added security
$salt = hash('sha256', uniqid(mt_rand(), true) . 'something random' . strtolower($username));
// Prefix the password with the salt
$hash = $salt . $password;
// Hash the salted password a bunch of times
for ( $i = 0; $i < 100000; $i ++ )
{
$hash = hash('sha256', $hash);
}
// Prefix the hash …Run Code Online (Sandbox Code Playgroud) 我试图将一个数字混淆/加密成字符串,然后再次想要对该字符串进行解复用/解密以获得一个数字.
我不能使用base64或任何其他公共可用的算法,因为生成的哈希将是个人的并且特定于每个用户并且不能与其他用户共享,其用于创建将包含个人哈希的个人URL.
基本上我想从userid生成哈希,因为userid是唯一的并且没有变化.
到目前为止,我已经创建了自定义函数来加密用户ID并从中获取哈希值.
<?php
$base_encryption_array = array(
'0'=>'b76',
'1'=>'d75',
'2'=>'f74',
'3'=>'h73',
'4'=>'j72',
'5'=>'l71',
'6'=>'n70',
'7'=>'p69',
'8'=>'r68',
'9'=>'t67',
'a'=>'v66',
'b'=>'x65',
'c'=>'z64',
'd'=>'a63',
'e'=>'d62',
'f'=>'e61',
'g'=>'h60',
'h'=>'i59',
'i'=>'j58',
'j'=>'g57',
'k'=>'f56',
'l'=>'c55',
'm'=>'b54',
'n'=>'y53',
'o'=>'w52',
'p'=>'u51',
'q'=>'s50',
'r'=>'q49',
's'=>'o48',
't'=>'m47',
'u'=>'k46',
'v'=>'i45',
'w'=>'g44',
'x'=>'e43',
'y'=>'c42',
'z'=>'a41'
);
function my_custom_encode($string){
global $base_encryption_array ;
$string = (string)$string;
$length = strlen($string);
$hash = '';
for ($i=0; $i<$length; $i++) {
if(isset($string[$i])){
$hash .= $base_encryption_array[$string[$i]];
}
}
return $hash;
}
function my_custom_decode($hash){
global $base_encryption_array ;
/* this …Run Code Online (Sandbox Code Playgroud) 如果我flipud()在加密期间使用函数,我需要在解密期间使用与其相反的函数.
是否有任何函数或代码片段flipud()在MATLAB 中执行函数的逆运算?
如何解密用 golang 中的私钥签名的消息?
$ openssl genrsa -out ./server/server.key
Generating RSA private key, 2048 bit long modulus
..................+++
.............................................+++
$ openssl rsa -in ./server/server.key -pubout -out ./client/client.pub
writing RSA key
$ echo "secret" | openssl rsautl -inkey ./server/server.key -sign > ./secret
# decrypt with public key
$ openssl rsautl -inkey ./client/client.pub -pubin -in ./secret
secret
Run Code Online (Sandbox Code Playgroud) 通过在这里看到这个评论和评论,在我的脑海中提出一个问题,为什么我们不使用我们自己的函数来保护密码?PHPMySQL
据说加密密码不是一个好主意,相反,我们应该使用PHP内置函数.像password_hash()和password_verify().
如果我创建自己的PHP函数怎么办?
例如:
安全代码HI HOW ARE YOU?应该是zq1zag1ewn1:a>!
我array在函数中使用过.
代码如下:
$txt = "HI HOW ARE YOU?";
$trans = array(" " => "1", "H" => "z", "C" => "f", "I" => "q", "O" => "a", "W" => "g", "A" => "e", "R" => "w", "E" => "n", "Y" => ":", "U" => ">", "?" => "!");
$change = strtr($txt, $trans);
echo $change; …Run Code Online (Sandbox Code Playgroud) 所以我在 Go 中遇到了以下代码,试图解释 md5 哈希是如何工作的。
package main
import (
"crypto/md5"
"fmt"
)
func HashFunc(word string) {
hash := md5.New()
bytes := []byte(word)
hash.Write(bytes)
hashValue := hash.Sum(nil)
hashSize := hash.Size()
for n := 0; n < hashSize; n += 4 {
var val = uint32(hashValue[n])<<24 +
uint32(hashValue[n+1])<<16 +
uint32(hashValue[n+2])<<8 +
uint32(hashValue[n+3])
fmt.Printf("%x ", val)
}
fmt.Println()
}
Run Code Online (Sandbox Code Playgroud)
我只是想知道如何解密由上述函数加密的任何数据。
我正在加密和解密Web应用程序.我已经构建了一个使用24字节密钥来加密/解密消息的算法.
查看此算法,请在此算法中提出可以使其表现更好的重要和错误.您的贡献可以帮助我们改进算法.
代码在我的GitHub上提供
算法:-
1] 24位输入/生成的密钥将被转换为24位代码的ASCII码.
public void setKey(char[] arr){
for(int i=0;i<24;i++){
key[i] = (int)arr[i];
}
}
Run Code Online (Sandbox Code Playgroud)
2]输入的字符串将更改为字符数组.
然后,每个字符将首先使用键的值递增,并更改为10位二进制代码.
public void Encryption(String text){
char[] msg = text.toCharArray();
int flag = 0;
int l = msg.length;
for(int i=0;i<l;i++){
int a = (int)msg[i];
// System.out.print(msg[i]+" "+a+"-> ");
if(flag>23)
flag=0;
int b=a+key[flag];
flag++;
//System.out.print(b+" | ");
String z = binary(b);
sb.append(lookUpTool(z));
//Character.toString((char)b);
}
//sb.append(sumBinary);
sb = comp1(sb);
}
Run Code Online (Sandbox Code Playgroud)
3] lookUp(): - 它将10位字符串作为输入和矩阵,并将该字符串分成两个5位二进制代码.
然后,我们将计算每个5位二进制代码的十进制值.
示例:0011101101 - > 00111 = 7和01101 …