Stránka 1 z 1

Přepis z C# do PHP

Napsal: 27 zář 2017 14:21
od lamin_cz
Zdravím moudré hlavy. Už od rána si lámu hlavu nad přepsáním třídy z C# do PHP. Jedná se o "podpis" XML pro komunikaci. Bohužel máme příklad jen v C# ...

Kód: Vybrat vše

using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;

public class RijndaelSimple
{
    private static string saltValue = "sul";     // can be any string
    private static string hashAlgorithm = "SHA1";            // can be "MD5"
    private static int passwordIterations = 2;               // can be any number
    private static string initVector = "vektor";   // must be 16 bytes
    private static int keySize = 256;                        // can be 192 or 128


    public static string Encrypt(string plainText, string passPhrase)
    {
        byte[] initVectorBytes = Encoding.UTF8.GetBytes(initVector);
        byte[] saltValueBytes = Encoding.UTF8.GetBytes(saltValue);

        byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);
        

        PasswordDeriveBytes password 
= new PasswordDeriveBytes(passPhrase, saltValueBytes, hashAlgorithm, passwordIterations);
        

        
// Use the password to generate pseudo-random bytes for the encryption
        // key. Specify the size of the key in bytes (instead of bits).
        byte[] keyBytes = password.GetBytes(keySize / 8);

        RijndaelManaged symmetricKey = new RijndaelManaged();

        // It is reasonable to set encryption mode to Cipher Block Chaining
        // (CBC). Use default options for other symmetric key parameters.
        symmetricKey.Mode = CipherMode.CBC;

        ICryptoTransform encryptor = symmetricKey.CreateEncryptor(keyBytes, initVectorBytes);
        MemoryStream memoryStream = new MemoryStream();
        CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write);
        
        cryptoStream
.Write(plainTextBytes, 0, plainTextBytes.Length);
        cryptoStream.FlushFinalBlock();

        byte[] cipherTextBytes = memoryStream.ToArray();

        foreach(var item in plainTextBytes)
        {
            Console.WriteLine(item.ToString());
        }
        memoryStream.Close();
        cryptoStream.Close();

        string cipherText = Convert.ToBase64String(cipherTextBytes);
        return cipherText;
    }

    static byte[] GetBytes(string str)
    {
        byte[] bytes = new byte[str.Length * sizeof(char)];
        System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
        return bytes;
    }

}
 


Jde mi zatím o Encrypt ... ztroskotal jsem u přepisu fce:

PasswordDeriveBytes password = new PasswordDeriveBytes(passPhrase, saltValueBytes, hashAlgorithm, passwordIterations);

(já vím, není toho mnoho)

Nesetkal se někdo s řešením?

Děkuji

Re: Přepis z C# do PHP  Vyřešeno

Napsal: 15 říj 2017 21:33
od CZechBoY

Re: Přepis z C# do PHP

Napsal: 21 říj 2017 10:58
od lamin_cz
Díky :-)