1

私はasp.netとphpの基本的なセキュリティを勉強しています。私はすでにasp.netにアプリケーションを実装することができました。今私がやりたいのは、phpを使って同じことを考え出すことです

可能であればphpに変換したいasp.netアプリケーションに使用しているコードは次のとおりです。

public static byte[] GenerateSalt()
    {
        const int MinSaltSize = 4;
        const int MaxSaltSize = 8;

        // Generate a random number to determine the salt size.
        Random random = new Random();
        int saltSize = random.Next(MinSaltSize, MaxSaltSize);

        // Allocate a byte array, to hold the salt.
        byte[] saltBytes = new byte[saltSize];

        // Initialize the cryptographically secure random number generator.
        RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();

        // Fill the salt with cryptographically strong byte values.
        rng.GetNonZeroBytes(saltBytes);

        return saltBytes;
    }

また、php で rng.GetNonZeroBytes() に使用する関数を知りたいです。

次に、データに base64_encode/base64_decode を使用します。閣下/奥様、あなたの答えは大変役に立ちます。ありがとう++ :D

4

1 に答える 1

1

mcrypt_create_iv(size, MCRYPT_DEV_URANDOM)奇妙な名前にもかかわらず、問題ないはずです。とほぼ同等rng.GetBytesです。

使用DEV_URANDOMは不可欠でDEV_RANDOMあり、セキュリティの増加が無視できるほど遅くRAND、安全ではありません。

ゼロ以外のバイトが必要な理由がわかりません。Base64 エンコードの後、ゼロバイトは通常の印刷可能な文字になります。

次のようなものを使用することをお勧めしますbase64_encode(mcrypt_create_iv(9, MCRYPT_DEV_URANDOM))

于 2012-11-03T10:05:53.713 に答える