小编Din*_*nei的帖子

如何为RabbitMQ Management HTTP API生成password_hash

心爱的RabbitMQ管理插件有一个HTTP API,可以通过普通的HTTP请求来管理RabbitMQ.

我们需要以编程方式创建用户,并且HTTP API是您选择的方式.文档很少,但API非常简单直观.

关注安全性,我们不希望以纯文本形式传递用户密码,而API提供了一个字段来代替发送密码哈希.从那里引用:

[GET | PUT | DELETE]/api/users/name

个人用户.要使用户,你需要一个看起来像这样的身体:

{"password":"secret","tags":"administrator"}
Run Code Online (Sandbox Code Playgroud)

要么:

{"password_hash":"2lmoth8l4H0DViLaK9Fxi6l9ds8=", "tags":"administrator"}
Run Code Online (Sandbox Code Playgroud)

标签键是必需的.无论是passwordpassword_hash必须设置.

到目前为止,这么好,问题是:如何正确生成password_hash

密码散列算法被配置在RabbitMQ的配置文件,我们的配置为默认SHA256.

我正在使用C#,以下代码生成哈希:

var cr = new SHA256Managed();
var simplestPassword = "1";
var bytes = cr.ComputeHash(Encoding.UTF8.GetBytes(simplestPassword));
var sb = new StringBuilder();
foreach (var b in bytes) sb.Append(b.ToString("x2"));
var hash = sb.ToString();
Run Code Online (Sandbox Code Playgroud)

这不起作用.在一些用于SHA256加密的在线工具中进行测试,代码产生了预期的输出.但是,如果我们转到管理页面并手动将用户密码设置为"1",那么它就像魅力一样.

这个答案让我导出配置并看看RabbitMQ正在生成的哈希值,我意识到了一些事情:

  • 哈希示例"1":"y4xPTRVfzXg68sz9ALqeQzARam3CwnGo53xS752cDV5 + Utzh"
  • 所有用户的哈希都有固定长度
  • 哈希每次都会改变(即使密码相同).我知道PB2K也会对密码执行此操作,但不知道此加密属性的名称.
  • 如果我通过password_hashRabbitMQ存储它没有更改

我也接受其他编程语言的建议,而不仅仅是C#.

c# rabbitmq rabbitmqadmin

11
推荐指数
7
解决办法
5314
查看次数

如何在XAML中拉伸网格单元格上的矩形

我需要在网格的第二行添加一个矩形.我需要矩形的宽度与网格的宽度相同.

但问题是,网格的宽度是在运行时决定的.如果我尝试访问WidthActualWidth在后面的代码,我得到NaN0.0分别.

ColumnSpan并且Stretch也没有工作.这是代码:

<Grid x:Name="downloadPdfGrid">
    <Grid.RowDefinitions>
        <RowDefinition Height="20"/>
        <RowDefinition Height ="Auto"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Button x:Name="btn" Content="{Binding Button}" Visibility="Collapsed" Click="OnButtonClick" Grid.Row="0"/>
    <Rectangle x:Name="underlineRect" Stretch="UniformToFill" Height="2" Fill="White" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="1"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

c# windows-8 winrt-xaml

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

制作一个按钮填充容器元素的整个宽度?

我正在使用div's as按钮转换为实际按钮,现在我需要让按钮填满容器的整个宽度.

在此输入图像描述

码:

.container {
  background-color: #ddd;
  padding: 10px;
  max-width: 500px;
  margin-left: auto;
  margin-right: auto;
}

.button {
  display: block;
  background-color: #bbb;
  margin: 10px;
  padding: 10px
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">

  <div class="button">
    Fills the full width
  </div>

  <button class="button">
    Does not fill the full width
  </button>

</div>
Run Code Online (Sandbox Code Playgroud)

添加display:block.button不工作(虽然我敢肯定,一定是在回答部分?),而且也没有left: 0; right: 0.width: 100%一些工作,但它忽略容器的填充属性,并使按钮太靠近容器的右侧.

这是JSFiddle:http://jsfiddle.net/mn40mz2n/

css

6
推荐指数
4
解决办法
4万
查看次数

div中包含的div表示一行

我已经尝试了几乎所有垂直对齐的div技巧,我可以找到并仍然没有得到结果.这是一个已建立的响应式框架,因此我将其拆分为一些内联CSS来显示问题.

在此输入图像描述

<div class="row uniform">
  <div style="clear:none;width:25%;float:left;background:#CCC;box-sizing:border-box;">
    box 1<br />
    line 2
  </div>
  <div style="clear:none;width:25%;float:left;background:#a43c69;color:#FFF;box-sizing:border-box;">
    box 2
  </div>
  <div style="clear:none;width:25%;float:left;background:#CCC;box-sizing:border-box;">
    box 3
  </div>
  <div style="clear:none;width:25%;float:left;background:#a43c69;color:#FFF;box-sizing:border-box;">
    box 4
  </div>
</div> 
Run Code Online (Sandbox Code Playgroud)

理想情况下,框2,3和4与框1的高度相同,所有框中的文本在中间垂直对齐.

row.uniform设置了一些边距,填充和基线的默认垂直对齐,但这并没有影响到这里.

css css3

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

CngKey.Create 不支持请求的操作

我正在尝试在 C# 程序集(目标.NET 4.0)中即时(以编程方式)生成自签名证书,以作为根 CA 生成其他证书。该证书不需要保留在 Windows 证书存储中,我会将其导出为文件。

通过阅读这个问题(特别是,@ dthorpe的答案),我决定给一个尝试CLR安全

CLR Security库在CngKey 类上放置了一个扩展方法来生成自签名证书,但我无法成功创建CngKeywith的实例:

var key = CngKey.Create(CngAlgorithm.Sha1); //same with Sha256, Sha512 and MD5
//or
var key = CngKey.Create(CngAlgorithm.Sha1, null, new CngKeyCreationParameters()
{
    ExportPolicy = CngExportPolicies.AllowExport,
    KeyUsage = CngKeyUsages.AllUsages,
    KeyCreationOptions = CngKeyCreationOptions.MachineKey,
});
Run Code Online (Sandbox Code Playgroud)

这些行中的任何一行都会引发异常:

System.Security.Cryptography.CryptographicException 未处理
HResult=-2146893783
Message=不支持请求的操作。

Source=System.Core  
StackTrace:  
  at System.Security.Cryptography.NCryptNative.CreatePersistedKey(SafeNCryptProviderHandle provider, String algorithm, String name, CngKeyCreationOptions options)  
  at System.Security.Cryptography.CngKey.Create(CngAlgorithm algorithm,  String keyName, CngKeyCreationParameters creationParameters)  
  at …
Run Code Online (Sandbox Code Playgroud)

.net c# certificate .net-4.0 self-signed

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