标签: sha1

在Perl中等效的SHA1 C#方法?

我得到了C#代码,我正在尝试使用Perl生成等效的SHA1.

public string GetHashedPassword(string passkey)
{
       // Add a timestamp to the passkey and encrypt it using SHA1.
       string passkey = passkey + DateTime.UtcNow.ToString("yyyyMMddHH0000");
       using (SHA1 sha1 = new SHA1CryptoServiceProvider())
       {
              byte[] hashedPasskey =
                     sha1.ComputeHash(Encoding.UTF8.GetBytes(passkey));
              return ConvertToHex(hashedPasskey);
       }
}
private string ConvertToHex(byte[] bytes)
{
       StringBuilder hex = new StringBuilder();
       foreach (byte b in bytes)
       {
              if (b < 16)
              {
                     hex.AppendFormat("0{0:X}", b);
              }
              else
              {
                     hex.AppendFormat("{0:X}", b);
              }
       }
       return hex.ToString();
}
Run Code Online (Sandbox Code Playgroud)

同样如下:

use Digest::SHA1 qw( sha1_hex );
my $pass …
Run Code Online (Sandbox Code Playgroud)

c# perl sha1

1
推荐指数
1
解决办法
862
查看次数

唯一的字符串哈希

我想创建一个任意长度String的唯一散列(16个字符长).有没有一个很好的库可以为C++实现MD5或SHA-1,我可以用它实现这个目标?(可能还有一个如何使用它的例子)

c++ hash md5 sha1

1
推荐指数
1
解决办法
2522
查看次数

C#中的SHA1表单.exe文件

我希望有人可以帮助我在C#中读取exe文件并从中创建一个SHA1哈希.我试图使用StreamReader和BinaryReader从可执行文件中读取.然后使用内置的SHA1算法我试图创建一个哈希但没有成功.StreamReader的算法结果是"AEUj + Ppo5QdHoeboidah3P65N3s =",而BinaryReader的算法结果是"rWXzn/CoLLPBWqMCE4qcE3XmUKw =".谁能帮助我从exe文件中获取SHA1哈希?谢谢.

BTW对不起我的英文;)

c# sha1 exe

1
推荐指数
1
解决办法
1727
查看次数

.NET中的SHA1CryptoServiceProvider与UNIX shasum不匹配

我正在尝试在ASP.NET应用程序和另一个基于UNIX的应用程序之间共享身份验证,其中散列密码存储在数据库中.我需要确保两个平台上的哈希算法匹配.

这是我在C#中散列的方式:

var sha1 = new SHA1CryptoServiceProvider();
var passwordBytes = Encoding.UTF8.GetBytes(password);
var passwordHash = sha1.ComputeHash(passwordBytes);
var base64 = Convert.ToBase64String(passwordHash);
return base64;

如果我使用密码,p@ssw0rd那么散列是该散列57B2AD99044D337197C0C39FD3823568FF81E48A的base64 V7KtmQRNM3GXwMOf04I1aP+B5Io=.base64哈希是存储在db中的内容.

如果我在UNIX上做同样的事情,我得到一个完全不同的哈希:

echo p@ssw0rd | iconv -f ISO-8859-1 -t UTF-8 | shasum -a 1 | base64 -e 产生 ZTU3NmQwNmUzMTAwNmRkNzFhNTFjZTg5ZjViMGI4NWM2NTMyNzg3OCAgLQo=

如果您使用OpenSSL进行尝试,请使用此方法echo "p@ssw0rd" |  openssl dgst -sha1 | openssl enc -base64,您将获得相同的哈希值.

导致不同哈希计算的两个SHA1算法有什么不同?我也不腌这些.

UPDATE

秘诀如下: echo -n "p@ssw0rd" | openssl dgst -sha1 -binary | openssl enc -base64

echo -n剥离换行符,-binary是必不可少的.

希望这可以帮助别人.

谢谢,马克

c# encryption cryptography sha1

1
推荐指数
1
解决办法
2190
查看次数

Java的SHA1哈希值与Perl的哈希值不匹配

如何让Java的MessageDigest.digest()结果与Perl的sha1-> digest相匹配?MessageDigest.digest()接受string.getBytes(),其中Perl我只是将一个字符串传递给sha1对象.这就是失败的原因吗?

JAVA:

String mystring ="zWh9YZX3";
MessageDigest.getInstance("SHA-1").digest(mysrting.getBytes())
Run Code Online (Sandbox Code Playgroud)

Perl的:

$mystring ="zWh9YZX3";  
$sha1 = Digest::SHA1->new;
$sha1->add($mystring);
$digest = $sha1->digest;
Run Code Online (Sandbox Code Playgroud)

java perl sha1

1
推荐指数
1
解决办法
1333
查看次数

为什么SHA-1算法为相同的输入值产生不同的值?

在这里,我附上我的代码,基于"SHA-1"算法的Java代码,手动给出相同的输入值:

import java.security.MessageDigest;    
import java.security.NoSuchAlgorithmException;    
import sun.misc.BASE64Encoder;

public class NewClass {       
 public static void main(String args[]) throws NoSuchAlgorithmException        
 {       
    MessageDigest digest = MessageDigest.getInstance("SHA-1");    
    System.out.println("Algorithm :"+digest.getAlgorithm());    
    digest.update("welcome".getBytes());    
    byte[] result = digest.digest();     
    hash = (new BASE64Encoder()).encode(result);     
    MessageDigest digest1 = MessageDigest.getInstance("SHA-1");    
    digest1.update("welcome".getBytes());    
    byte[] result1 = digest1.digest();    
    System.out.println(result);    
    System.out.println(result1);    
    String hash1 = (new BASE64Encoder()).encode(result);    
    System.out.println("Digest value"+hash);    
    System.out.println("Digest value"+hash1);       
 }

}
Run Code Online (Sandbox Code Playgroud)

输出:

Algorithm :SHA-1

[B@42e816

[B@9304b1

Digest value wLE3/i15JFnyb/djzORFdKW1qwM=

Digest value wLE3/i15JFnyb/djzORFdKW1qwM=
Run Code Online (Sandbox Code Playgroud)

上述算法产生相同的哈希码,但中间值不相同.这是为什么?

java sha1 sha

1
推荐指数
2
解决办法
765
查看次数

php sha1不等于java sha1

可能重复:
Java的MessageDigest SHA1算法返回的结果与php的SHA1函数不同

我用的是什么:

Java的:

public String sha1(String s) {
    try {
        // Create MD5 Hash
        MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1");
        digest.update(s.getBytes());
        byte messageDigest[] = digest.digest();

        // Create Hex String
        StringBuffer hexString = new StringBuffer();
        for (int i = 0; i < messageDigest.length; i++)
            hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
        return hexString.toString();

    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    return "";
}
Run Code Online (Sandbox Code Playgroud)

结果:

java: System.out.println(sha1("foobar123dsadn23u1wdqqwdyxdasd"));
php:                echo sha1('foobar123dsadn23u1wdqqwdyxdasd');

php:  d8033103e9aaf67af13a4b45534b2d0f6d8dfded
java: d83313e9aaf67af13a4b45534b2df6d8dfded
Run Code Online (Sandbox Code Playgroud)

为什么两个哈希不一样?

php java hash sha1 equality

1
推荐指数
1
解决办法
3814
查看次数

使用DECRYPT_MODE的RSA/ECB/PKCS1Padding

我试图用公钥解密字符串以与哈希进行比较.代码是关注的

byte[] dectyptedText = null;
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.DECRYPT_MODE, key);
dectyptedText = cipher.doFinal(text);
return dectyptedText;
Run Code Online (Sandbox Code Playgroud)

上面的代码生成一个这样的字符串(base64encode)

MCEwCQYFKw4DAhoFAAQUy3qkZYgfRVo2Sv1F9bHa3pDs044 =

哈希由以下代码生成

 byte[] key = stringToHash.getBytes();
 MessageDigest md = MessageDigest.getInstance("SHA-1");
 hash = md.digest(key);
Run Code Online (Sandbox Code Playgroud)

上面的代码生成如下所示的示例哈希

y3qkZYgfRVo2Sv1F9bHa3pDs044 =

如果你注意到两者都有正确的哈希值,即y3qkZYgfRVo2Sv1F9bHa3pDs044 =但解密代码会产生并预先添加额外的MCEwCQYFKw4DAhoFAAQU

不明白这个额外的东西是如何添加的以及为什么.

请问有人对此有所了解吗?

谢谢

encryption hash sha1 rsa pkcs#1

1
推荐指数
2
解决办法
2万
查看次数

为什么sha1为同一输入字符串返回不同的哈希值?

这是一个非常简单的程序,它接受一个整数并将其转换为字符串.从那里我使用SHA1散列字符串并将哈希打印到控制台.但是当我重新运行程序时,我得到了一个不同的哈希值,用于我程序中定义的相同整数.知道为什么会这样,我该怎么办呢?

这是我的计划.要编译我使用:gcc -o myhash myhash.c -lcrypto

int main (int argc, char* argv[]){

    //sha1 returns 20 byte hash
    unsigned char myHash[SHA_DIGEST_LENGTH];

    //my integer that I want to hash
    int myInt = -1613543;

    //convert to char string
    char input[50]; 
    snprintf(input,50,"%d",myInt);

    //compute hash
    SHA1(input,sizeof(input),myHash);

    //print hash
    int i;
    for(i=0;i<SHA_DIGEST_LENGTH;i++){

        printf("%02x", myHash[i]);
    }
    printf("\n");

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

c hash sha1

1
推荐指数
1
解决办法
1249
查看次数

发布后,Google SignIn无法正常工作(上班前)

我在使用标准Google SignIn时遇到问题:在构建我的Android应用程序版本后,Google SignIn无效.我按照这里解释的指南来构建一个版本:https: //developer.android.com/studio/publish/app-signing.html

然后,我转到谷歌API控制台,我使用私钥创建一个新的客户端OAuth 2.0:生成SHA1

keytool -exportcert -keystore MY_PATH_TO_PRIVATE_KEY -list -v
Run Code Online (Sandbox Code Playgroud)

我的密钥库的密码是请求的,然后我看到SHA1.我认为这个程序是正确的,因为我使用相同的Facebook登录,它的工作原理.我正在使用最新版本的Android Studio.

我是否要在Gradle配置或Android Manifest中添加一些?

android sha1 release apk google-signin

1
推荐指数
1
解决办法
907
查看次数

标签 统计

sha1 ×10

hash ×4

c# ×3

java ×3

encryption ×2

perl ×2

android ×1

apk ×1

c ×1

c++ ×1

cryptography ×1

equality ×1

exe ×1

google-signin ×1

md5 ×1

php ×1

pkcs#1 ×1

release ×1

rsa ×1

sha ×1