小编Mat*_*emp的帖子

WS-Security中PasswordDigest的工作算法

我遇到了WS-Security的问题,并创建了一个正确的随机数和密码摘要.

我成功使用SoapUI将数据发送到Oracle系统.所以我能够拦截SoapUI的调用(将代理更改为127.0.0.1端口8888以使用Fiddler失败,因为它是通过SSL) - 拦截非常重要,因为这些值只能使用一次.然后我可以抓取nonce,创建时间戳和密码摘要将它们放入我的代码中(我只有30秒才能完成这个,因为值不会持续!)并且我获得了成功.

所以我知道它不是别的 - 只是密码摘要.

我使用的值如下:

Nonce: UIYifr1SPoNlrmmKGSVOug==
Created Timestamp: 2009-12-03T16:14:49Z
Password: test8
Required Password Digest: yf2yatQzoaNaC8BflCMatVch/B8=
Run Code Online (Sandbox Code Playgroud)

我知道创建摘要的算法是:

Password_Digest = Base64 ( SHA-1 ( nonce + created + password ) )
Run Code Online (Sandbox Code Playgroud)

使用以下代码(来自Rick Strahl的帖子)

protected string GetSHA1String(string phrase)
{
    SHA1CryptoServiceProvider sha1Hasher = new SHA1CryptoServiceProvider();
    byte[] hashedDataBytes = sha1Hasher.ComputeHash(Encoding.UTF8.GetBytes(phrase));
    return Convert.ToBase64String(hashedDataBytes);
}
Run Code Online (Sandbox Code Playgroud)

我明白了:

GetSHA1String("UIYifr1SPoNlrmmKGSVOug==" + "2009-12-03T16:14:49Z" + "test8") = "YoQKI3ERlMDGEXHlztIelsgL50M="
Run Code Online (Sandbox Code Playgroud)

我尝试了各种SHA1方法,都返回相同的结果(我猜这是件好事!):

SHA1 sha1 = SHA1.Create();
SHA1 sha1 = SHA1Managed.Create();

// Bouncy Castle:
protected string GetSHA1usingBouncyCastle(string phrase)
{
    IDigest …
Run Code Online (Sandbox Code Playgroud)

c# xml ws-security sha1 soapui

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

C#从对象内改变'this'

这可能是一种可怕的做事方式,但无论如何......

我想从对象本身重新初始化一个对象.

我有一个名为的对象Quote,其中一个方法是Calculate(),它做了很多事情.有一件事是,如果某些主要属性发生变化,我们称之为大变革,我们需要创建一个新的Quote(不只是更新现有的).

Calculate()它的中间,这样做真的很容易(IMO):

public class Quote {
    public bool Calculate() {

        //... do lots of things

        if(IsBigChange) {
            this = new Quote();
        }

        //... do more things
        // later when it is saved it will be a new quote

    }
}
Run Code Online (Sandbox Code Playgroud)

Calculate() 从许多地方调用,所以如果你知道我的意思,我不想在检测到Big Change时将其踢出并在"外部"创建新对象.

所以,如果你不能设置this,是否有其他方法可以实现相同的结果?

c#

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

关于Url.Content扩展的intellisense

当你使用MVC Razor时,你经常会写@ Url.Content("〜/ images/someimage.png")并且你在那个字符串上获得intellisense - 它以某种方式知道它是一条路径.

我为Url.Content()创建了一个扩展方法,但在输入path参数时它没有获得intellisense.

有没有人知道你是否有某种属性可以放在参数上,或者是否有更好的方法(覆盖?)我可以切入并更改默认的Url.Content的行为?

    public static string ContentExtended(this UrlHelper urlHelper, string contentPath)
    {
        string result = urlHelper.Content(contentPath);

        // do stuff here to remove application folder name on godaddy hosting

        return result;
    }
Run Code Online (Sandbox Code Playgroud)

编辑:我使用resharper,只是意识到这可能是一个特定于resharper的功能,常规VS用户实际上没有.我禁用了Resharper intellisense,并且只启用了常规的VS intellisense,并且路径特定的自动完成功能无效.所以这是一个resharper功能,而不是编程问题

c# resharper intellisense razor

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

标签 统计

c# ×3

intellisense ×1

razor ×1

resharper ×1

sha1 ×1

soapui ×1

ws-security ×1

xml ×1