小编use*_*707的帖子

哈希算法SHA256,我的方法安全吗?如何添加盐值以使其更安全

我对密码学很陌生,想了解哈希算法。

我有以下来源来创建密码的哈希版本,该密码可以存储在我的数据库中。

    public static string hashPasswordGenerator(string password)
    {
        System.Security.Cryptography.SHA256Managed crypt = new System.Security.Cryptography.SHA256Managed();
        StringBuilder hash = new StringBuilder();
        byte[] cry = crypt.ComputeHash(Encoding.UTF8.GetBytes(password), 0, Encoding.UTF8.GetByteCount(password));
        return Convert.ToBase64String(cry);
    }
Run Code Online (Sandbox Code Playgroud)

我的示例用户User1使用密码Password1,这返回哈希版本GVE/3J2k+3KkoF62aRdUjTyQ/5TVQZ4fI2PuqJ3+4d0=

我的问题是:

  1. 这安全吗?
  2. 我应该加盐吗?如果是这样,有人可以给我看一个简单的例子,因为我真的不明白它是如何生成盐的,以便它每次都会匹配密码?
  3. 如果有人有这个 hashPasswordGenerator 方法,他们可以对我的密码进行逆向工程吗?

提前致谢。

c# security hash cryptography sha256

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

Charts.js 工具提示在图表上重叠文本

由于Charts.js还不支持注释,所以我在绘制图表后添加了数据点的注释。使用 ctx.fillText 如下所示。

        animation: {
            animateScale: true,
            animateRotate: true,
            onComplete: function () {
                var chartInstance = this.chart,
                    ctx = chartInstance.ctx;
                ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);
                ctx.textAlign = 'center';
                ctx.fillStyle = this.chart.config.options.defaultFontColor;
                ctx.textBaseline = 'bottom';

                this.data.datasets.forEach(function (dataset, i) {
                    var meta = chartInstance.controller.getDatasetMeta(i);
                    meta.data.forEach(function (bar, index) {
                        data = dataset.data[index];
                        ctx.fillText(data, bar._model.x, bar._model.y - 5);
                    });
                });
            }
        }
Run Code Online (Sandbox Code Playgroud)

除了现在工具提示显示在新添加的文本下方之外,这非常有效。这并不那么明显,但有时它会重叠在一个不好的地方,这意味着您看不到后面的工具提示。

在此输入图像描述

有没有办法设置 ctx.fillText 或工具提示的 z 索引,以便我可以正确地对它们进行分层?

javascript z-index tooltip chart.js

5
推荐指数
2
解决办法
7105
查看次数

如何使用 jest.spyOn 测试 RTKQuery 端点

我正在尝试测试 RTKQuery 是否已使用 jest 调用端点。

我最终还希望能够模拟返回数据是什么,但首先我只想检查挂钩是否已被调用。

在下面的示例中,我试图监视 myApi 以获取自动生成的 useGetMyListQuery 挂钩。

运行时会抛出错误,有人可以帮忙吗?

it('Should render', async () => {
    jest.spyOn(myApi, 'useGetMyListQuery')

    render(
      <Provider store={store}>
        <MyComponent />
      </Provider>
    )

    expect(myApi.useGetMyListQuery).toBeCalled()
})
Run Code Online (Sandbox Code Playgroud)

javascript testing redux redux-toolkit rtk-query

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

在 Google Apps Script 中获取边框的最有效方法是什么

在 Google Apps Script 中获取边框详细信息的最佳方法是什么?

我在 GAS 的文档中看不到任何带边框的东西,所以我不得不求助于通过电子表格 API 获取边框。

这可以正常工作,除了当边界数量变大时需要很长时间才能返回或根本不返回。

有一个更好的方法吗?

var fieldsBorders = 'sheets(data(rowData/values/userEnteredFormat/borders))';

var currSsId = SpreadsheetApp.getActiveSpreadsheet().getId();
var activeSheet = SpreadsheetApp.getActiveSheet();
var name = activeSheet.getName();

var data = Sheets.Spreadsheets.get(currSsId, {
    ranges: name,
    fields: fieldsBorders
});
Run Code Online (Sandbox Code Playgroud)

performance border google-apps-script google-sheets-api

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

React redux - 父状态改变,但子组件不重新渲染

我只是想学习使用 redux,我有一个非常简单的计数器列表组件,它有一个子计数器组件的列表。

我在计数器上有一个 onIncrement 操作,我想在单击时增加计数。

当我单击增量时,它会更新父状态,但是子计数器不会更新。如果我浏览然后返回列表,它确实呈现正确,在我看来这意味着状态已更新。

这是我的代码:

计数器组件

import React, { Component } from "react";
import { connect } from 'react-redux';
import { incrementCounter } from '../../actions/counterActions';
import PropTypes from 'prop-types';

class Counter extends Component {
    render() {
        return <div className="m-2">
            <b>{this.props.counter.count}</b>
            <button className="btn btn btn-secondary btn-sm m-2" onClick={() => { this.onIncrement(this.props.counter) }}>Increment</button>
        </div>;
    }

    onIncrement(counter) {
        this.props.incrementCounter(counter);
    }
}

const mapStateToProps = state => ({
})

Counter.propTypes = {
    incrementCounter: PropTypes.func.isRequired,
}

export default connect(mapStateToProps, { incrementCounter })(Counter);
Run Code Online (Sandbox Code Playgroud)

计数器列表组件 …

javascript reactjs redux

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

停止 webpack 在文件底部添加 script 标签

我正在使用 webpack 使用 HtmlWebpackPlugin 生成 html 文件 - 我希望注入所有代码而不是引用任何外部 javascript 文件。

在我看来,Webpack 在 html 文档的底部包含了 main.js,有没有办法阻止这种情况发生?

<script src="main.js"></script>
Run Code Online (Sandbox Code Playgroud)

我的 webpack 配置如下所示

var path = require('path');
var fs = require("fs");
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack');

module.exports = {
    context: __dirname,
    entry: './Resources/TestExport/index.js',
    output: {
        path: path.resolve(__dirname, 'Resources')
    },
    plugins: [
        new HtmlWebpackPlugin({
            filename: 'TestExport.html',
            template: './Resources/TestExport/SecureExportTemplate.html',
            inject: true,
            jquery: fs.readFileSync('./Resources/TestExport/js/jquery.js', 'utf8'),
            testExport: require("@babel/core").transformSync(fs.readFileSync('./Resources/TestExport/js/testExport.js', 'utf8'), {
                "presets": [["@babel/preset-env"]]
            }).code,
            style: fs.readFileSync('./Resources/TestExport/css/style.css', 'utf8'),
            minify: {
                html5: true,
                collapseWhitespace: true,
                minifyCSS: …
Run Code Online (Sandbox Code Playgroud)

node.js webpack

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

如何获取TSQL中两个日期之间有多少小时4AM

我需要获取TSQL中两个日期之间发生了多少特定的小时。一些例子:

以下将得出结果= 1

declare @date1 datetime = '2019-10-01 00:00:00.000';
declare @date2 datetime = '2019-10-02 00:00:00.000';
Run Code Online (Sandbox Code Playgroud)

以下将使结果= 0,因为之间有0个4AM

declare @date1 datetime = '2019-10-01 05:00:00.000';
declare @date2 datetime = '2019-10-02 00:00:00.000';
Run Code Online (Sandbox Code Playgroud)

以下将得出结果= 2,因为之间有2个4AM

declare @date1 datetime = '2019-10-01 03:00:00.000';
declare @date2 datetime = '2019-10-02 05:00:00.000';
Run Code Online (Sandbox Code Playgroud)

以下示例将给出结果= 2,因为即使它们是在4:00 AM时间,也有2个4AM

declare @date1 datetime = '2019-10-01 04:00:00.000';
declare @date2 datetime = '2019-10-02 04:00:00.000';
Run Code Online (Sandbox Code Playgroud)

我已经尝试过类似的操作...但是给出的答案不正确

DECLARE @startdate AS DATETIME = '2019-10-01 03:00:00.000'
DECLARE @enddate   AS DATETIME = '2019-10-02 00:00:00.000'
DECLARE @hour int = 4

SELECT DATEDIFF(HOUR, …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server datetime

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

使用加载器在 JavaScript 中将 SASS 文件编译为 CSS 字符串

我有一种情况,我需要获取从已用 JavaScript 编译的 SASS 文件生成的 CSS 字符串。

我有一个只使用 CSS 的解决方案,使用 raw-loader

https://github.com/webpack-contrib/raw-loader

使用以下代码...

import css from '!!raw-loader!../css/styles.css';
console.log(css);
Run Code Online (Sandbox Code Playgroud)

但是,为此我需要在执行这一步之前手动编译 SCSS,而这我真的不想做。

我更愿意做这样的事情...注意它是一个 SCSS 而不是 CSS 文件

import css from '!!raw-loader!../css/styles.scss';
console.log(css);
Run Code Online (Sandbox Code Playgroud)

但这会返回一些 JavaScript,我的 webpack 配置中已经有一个 SCSS 加载器,看起来像这样。

        {
            test: /\.s[ac]ss$/i,
            use: [
                {
                    loader: 'style-loader',
                    options: {
                        insert: 'head', // insert style tag inside of <head>
                        injectType: 'singletonStyleTag' // this is for wrap all your style in just one style tag
                    }
                },
                'css-loader',
                'sass-loader'
            ]
        },
Run Code Online (Sandbox Code Playgroud)

javascript css sass loader webpack

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

在选项列表中未显示的 Azure 存储上启用静态网站

我想尝试使用 Azure 存储来托管我的静态网站。

按照本教程,我已经到了需要启用静态网站的重点。

https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-static-website-host

在此处输入图片说明

但是,当我这样做时..静态网站的选项不在列表中。

谁能帮我?我尝试了不同的地区和帐户类型,但没有一个显示该选项。

如我下面的屏幕截图所示,我已经按照文档使用 Storage V2(通用 V2)设置了 ip,但仍然没有得到该选项。

在此处输入图片说明

azure azureportal

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

您可以缓存一个变量以在 C# AWS Lambda 函数调用之间使用

我想在 C# Lambda 调用之间使用缓存,我知道如果 Lambda 从冷启动,这是不可能的,但如果在短时间内被多次调用,我们可以使用缓存。

我尝试过创建一个静态变量,但这似乎在每次调用后都会重新初始化?

有人有主意吗?下面是一个示例,我希望每次将 TestCache 变量增加 1,但这总是返回 1。

using Amazon.Lambda.APIGatewayEvents;
using Amazon.Lambda.Core;
using System.Collections.Generic;

// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]

namespace MyTestLambda
{
    public class Global
    {
        private readonly Dictionary<string, string> allOriginHeaders = new Dictionary<string, string>
            {
                { "Access-Control-Allow-Origin", "*" }
            };

        public static int TestCache = 0;

        public APIGatewayProxyResponse Handler(APIGatewayProxyRequest apigProxyEvent)
        {
            TestCache += 1;

            return new APIGatewayProxyResponse
            {
                Body = TestCache.ToString(), …
Run Code Online (Sandbox Code Playgroud)

c# amazon-web-services aws-lambda

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

私有 npm 注册表的 npm 安装失败

我使用 gitlab 创建了一个私人 npm 注册表

我有以下 .npmrc 文件,该文件与我用来发布的 .npmrc 文件相同,没有任何问题。我已用占位符替换了所有公司值。

@myorg:registry=https://gitlab.com/api/v4/packages/npm/
//gitlab.com/api/v4/packages/npm/:_authToken=[[MY_TOKEN_HERE]]
//gitlab.com/api/v4/projects/12345678/packages/npm/:_authToken=[[MY_TOKEN_HERE]]
Run Code Online (Sandbox Code Playgroud)

当我去安装时,我收到以下错误消息

npm install @myorg/my-package-name-here
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/@myorg/my-package-name-here - Not found
npm ERR! 404
npm ERR! 404  '@myorg/my-package-name-here@latest' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, …
Run Code Online (Sandbox Code Playgroud)

scope npm gitlab npm-install npm-registry

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

检查列表中的唯一值,然后递增重复项c#Linq

我有一种情况,我想枚举一个字符串列表,然后检查重复项,如果有任何重复项,最后增加数字.字符串的顺序无关紧要.

例如,如果我的列表是:

  • 测试
  • 测试仪
  • 测试仪
  • 测试仪

它将改为

  • 测试
  • 测试仪
  • 测试仪(1)
  • 测试仪(2)

是否有捷径可寻?我目前的想法是做一个分组,然后找到每个组的计数,然后递归地遍历每个组并更改值 - 但确定有一个更快的方法来使用LINQ做到这一点

c# linq group-by

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