首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用C#为Joomla2.5创建密码

用C#为Joomla2.5创建密码
EN

Stack Overflow用户
提问于 2014-09-23 18:10:50
回答 2查看 161关注 0票数 0

我正在尝试使用C#为Joomla2.5创建新的密码。

我尝试了一种方法,使用MD5CryptoService散列一些传递,然后连接一个包含32个字符的盐字符串,但没有成功。

代码语言:javascript
复制
var provider = new MD5CryptoServiceProvider();

var bytesFromPassword = System.Text.Encoding.ASCII.GetBytes("my_password");
var hash = provider.ComputeHash(bytesFromPassword);

Random random = new Random((int) DateTime.Now.Ticks);
byte[] salt = new byte[32];
random.NextBytes(salt);

string hashTo64 = Convert.ToBase64String(hash);
string saltTo64 = Convert.ToBase64String(salt);

var formattedPassword = string.Format("{0}:{1}", hashTo64, saltTo64);

这个代码有什么问题吗?

我需要改变什么吗?

Joomla2.5是否使用了一种与我尝试的方法不同的新加密方法?

谢谢大家!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-23 19:08:42

目前,您正在创建的salt尚未用于存储密码。据我对Joomla的理解,密码被保存为十六进制字符串。

首先,您必须将盐包含在bytesFromPassword中。

代码语言:javascript
复制
var salt = "ThereAreManySaltsButThisOneIsMine";
var bytesFromPassword = Encoding.ASCII.GetBytes("my_password" + salt);
var hash = provider.ComputeHash(bytesFromPassword);

var hashString = GenerateHexadecimalStringFromBytes(hash);
var formattedPassword = string.Format("{0}:{1}", hashString, salt);

将字节数组转换为十六进制字符串的Helper方法:

代码语言:javascript
复制
private static string GenerateHexadecimalStringFromBytes(byte[] hash)
{
        StringBuilder sBuilder = new StringBuilder();

        // Loop through each byte of the hashed data  
        // and format each one as a hexadecimal string. 
        foreach (byte t in hash)
        {
            sBuilder.Append(t.ToString("x2"));
        }
        return sBuilder.ToString();
    }
票数 0
EN

Stack Overflow用户

发布于 2014-09-23 19:07:07

我用以下两个问题解决了这个问题:

using php to create a joomla user password?

How convert byte array to string

希望它也能帮助到别人!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26001907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档