Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
using System; using System.Linq; using System.Text; using Org.BouncyCastle.Crypto.Engin..
Decoded Output download
<? using System;
using System.Linq;
using System.Text;
using Org.BouncyCastle.Crypto.Engines;
using Org.BouncyCastle.Crypto.Modes;
using Org.BouncyCastle.Crypto.Parameters;
namespace DecryptionExample
{
// You need to install bccrypto-csharp from BouncyCastle. Please see BouncyCastle page.
class Program
{
static void Main(string[] args)
{
string keyFromConfiguration = "72FD87CDAF38CC4ADC5C68BA60705D94167C0C2DDBC2B4AC5CED40BC99E203AE";
// Data from server
string ivFromHttpHeader = "56110FBB038899EC55071853";
string authTagFromHttpHeader = "9E73F11DFB2722B685531545B15940E8";
string httpBody = "0DC2A3E34C32340CB9C3EB2E40504C86984EDADD474E953740980EDC8ECFCAC37EB574E962C8A03844C08729E209A43FF4970F763DC3BDAE8178064EA685F20803DFD29DDC8C958D0DE09F9B14C699312AA581EABD0040EE3700DE1EB3878EC34E05982C1B4D8FFE9E279C21E497440FC951102BF09D61215582E8E9FDC6B52FC0CF43844A70FB259816720610C2B10DA722BB82C66FD2348327E82DE1CBEB3A17C6B4FA94D2744410E0A78A0D39794944ADE4CA327AA081945EEDC97047A221EBD59C812DF1CE6B604956A34A46F2D96FC87417AFC920F3424586005FF698A26DCF0224F447E588516E3D9380F8BDFD15252531FA2C2F1C1A48D7C11DB6DC4274AAEA340297BD373E7C92D739F4DF6AB8FBE648CE817BA6C6AD1BD470FEE6CD1F34FF55595B6AA94815AF090BE244C652E0B7371FCCC1F271A079FD6DFA72D869A8E775661183BBC757D11089D955D50B16E8F9D3CF672402A26BD02DA02EC595C76538C158167F450B230438158C49000AE296C098BD913A6F294AB1A567A7293E23686635D556F379A3C323035A6B9A7437907886A596DCB00453B538834C7139E4DD3851D0BCADB59C4D1C7B3704858FA5A38F38C04CFE2B62F8A0033011FE16EB49AC4D9C3DB386E2BA32B56153C1416A4246B7E30B3E309B1503F7DFC83FF16BFA371B35FD686394D39D76AF9269BE6C8E7CEE7E53AF322408710E99FCFAA1C1C07ACAFF115E457F38A360275679E059D193BFFDB6F29D375BC4D55AEAC3688767E8E1773C6E0F9CA82A623BB07425DACCBEDFEDBB5DB1EF061E8ED24A99C005BD08D1B7B531ED5B867468AAEB4158216C7967250DFC79BB169B3FC69395D582EFFF5354FC0D5C3ED59F5B41D870F8F8019EDEC3433682479E333CF8F810650EEEA4E39C21055EB5D8A44BC551C36411B34EC24FA039553CDB959F801AB68CB62F88A1719623D28D65C511032D337D1FD6EAC96CA679B24CAD39C4E90736ED6556D7D2E579722C6AF1E47E65B6DB25EC62CF59B66C13687112EF7BB00A4C3EC66D6721591DA3E7A79BE3AAAB07864680F4115EB80B1257DD0C67699DED2FE50F785BB4E67693D2D9C9E68F9D1C47886A06E0EE70DFB9C077EC9AC6E9E3FDB0AF1C7ABA052CCD3F5768DB6E6BC88658290295312BD792C6C0E680E1FC1AFF723C8C18F3F659F4C4D92E27F4B8C37A988C5F53F19C0702D6E319F9FF88F7A93DF63CE8FC1120A1D92EE8611F72AF0C8C4C094EE8AB2BC78E996A59FAFE1D6F800008DA561B2C280F8549AD8A0673BFFEA8C25006585282139188B3E0D81DFAD2C03E0DFFBB267FA8874E510A593156F669075D0F46DE2A9D2EC78B4319C341F8CDB865E12EA4F8F504BA02CF75394F3170AF7192DE055C6B9B7FA68807C9459616DD752F28EFFB85D714EF1B90FB374E9EADD7E36EB9A7D7D201BF9804E6BAEFA73B8EE33438086A54F851F252D09553072EEAB69C001A467D0A88357C60C779AF677989ECFBE129E3665F329F041CC4AE7BC46A4D3C4D0D570083A03F5F32B2BA0FB0048904E578D3ED0F1B2A5EB79460A3C3EDB928FD2F2DA8D361844301D230F8178DB3D917A6CB22B7DD6BE0C5DD8E7A9740C3052538C0B260DF6AC32E99996EC92AFA701DB34DB41F18B07D31CEE68CDCD2168A85655A70BC6137D28E3F7001B02203A7FAD6A79A31AC465967341CFD093391688CACF95210761109A6CDF8264E8612B47BB52CD8BC384CFE6F37B98FD6FB4B56D9924170AB5647370AA35EE70EBFF7EF732124B21BDC277038754C82F23DF718A3B1DDCA66CDD06BE8E4196E252F7948D867755CD2E9BA83CE7B12D1B7DDC0D9EA56603C7A9D1C176337D35A8B2A5CCD90F36FC52F12E0C48EC99BEB4E996ED02C7098416D6FDCA8D9F4D02C52815C9EE8A0900B16B1B3E2F414EF67C80D9716E7AB37AE4E1DEAC9213F1A2C8338F0B57139DF060F69F70228CFF611F7E7B4323D9A5D8ECB881BFB3038013FBFC52AE1E07F473AAB99084EE87718154A3286A3CC96B8D59840CCD9460B4FDE3023DEB278ADF573C2EF0DA9791661127CC7DDE53E013147B39619D03C066B390C82A6AE8AF8694EC0862EF98F3A0459FEB5A9BD2FF787D63E72194DB47A1C5252E5D57F97D12FF6104A5A68FF12F0B77062B5B16C812B99C58CDFBA87E27F7758C43F42E6CE16C7A7CC5E988E3FAC1D15";
// Convert data to process
byte[] key = ToByteArray(keyFromConfiguration);
byte[] iv = ToByteArray(ivFromHttpHeader);
byte[] authTag = ToByteArray(authTagFromHttpHeader);
byte[] encryptedText = ToByteArray(httpBody);
byte[] cipherText = encryptedText.Concat(authTag).ToArray();
// Prepare decryption
GcmBlockCipher cipher = new GcmBlockCipher(new AesLightEngine());
AeadParameters parameters = new AeadParameters(new KeyParameter(key), 128, iv);
cipher.Init(false, parameters);
// Decrypt
var plainText = new byte[cipher.GetOutputSize(cipherText.Length)];
var len = cipher.ProcessBytes(cipherText, 0, cipherText.Length, plainText, 0);
cipher.DoFinal(plainText, len);
Console.WriteLine(Encoding.ASCII.GetString(plainText));
}
static byte[] ToByteArray(string HexString)
{
int NumberChars = HexString.Length;
byte[] bytes = new byte[NumberChars / 2];
for (int i = 0; i < NumberChars; i += 2)
{
bytes[i / 2] = Convert.ToByte(HexString.Substring(i, 2), 16);
}
return bytes;
}
}
}
?>
Did this file decode correctly?
Original Code
using System;
using System.Linq;
using System.Text;
using Org.BouncyCastle.Crypto.Engines;
using Org.BouncyCastle.Crypto.Modes;
using Org.BouncyCastle.Crypto.Parameters;
namespace DecryptionExample
{
// You need to install bccrypto-csharp from BouncyCastle. Please see BouncyCastle page.
class Program
{
static void Main(string[] args)
{
string keyFromConfiguration = "72FD87CDAF38CC4ADC5C68BA60705D94167C0C2DDBC2B4AC5CED40BC99E203AE";
// Data from server
string ivFromHttpHeader = "56110FBB038899EC55071853";
string authTagFromHttpHeader = "9E73F11DFB2722B685531545B15940E8";
string httpBody = "0DC2A3E34C32340CB9C3EB2E40504C86984EDADD474E953740980EDC8ECFCAC37EB574E962C8A03844C08729E209A43FF4970F763DC3BDAE8178064EA685F20803DFD29DDC8C958D0DE09F9B14C699312AA581EABD0040EE3700DE1EB3878EC34E05982C1B4D8FFE9E279C21E497440FC951102BF09D61215582E8E9FDC6B52FC0CF43844A70FB259816720610C2B10DA722BB82C66FD2348327E82DE1CBEB3A17C6B4FA94D2744410E0A78A0D39794944ADE4CA327AA081945EEDC97047A221EBD59C812DF1CE6B604956A34A46F2D96FC87417AFC920F3424586005FF698A26DCF0224F447E588516E3D9380F8BDFD15252531FA2C2F1C1A48D7C11DB6DC4274AAEA340297BD373E7C92D739F4DF6AB8FBE648CE817BA6C6AD1BD470FEE6CD1F34FF55595B6AA94815AF090BE244C652E0B7371FCCC1F271A079FD6DFA72D869A8E775661183BBC757D11089D955D50B16E8F9D3CF672402A26BD02DA02EC595C76538C158167F450B230438158C49000AE296C098BD913A6F294AB1A567A7293E23686635D556F379A3C323035A6B9A7437907886A596DCB00453B538834C7139E4DD3851D0BCADB59C4D1C7B3704858FA5A38F38C04CFE2B62F8A0033011FE16EB49AC4D9C3DB386E2BA32B56153C1416A4246B7E30B3E309B1503F7DFC83FF16BFA371B35FD686394D39D76AF9269BE6C8E7CEE7E53AF322408710E99FCFAA1C1C07ACAFF115E457F38A360275679E059D193BFFDB6F29D375BC4D55AEAC3688767E8E1773C6E0F9CA82A623BB07425DACCBEDFEDBB5DB1EF061E8ED24A99C005BD08D1B7B531ED5B867468AAEB4158216C7967250DFC79BB169B3FC69395D582EFFF5354FC0D5C3ED59F5B41D870F8F8019EDEC3433682479E333CF8F810650EEEA4E39C21055EB5D8A44BC551C36411B34EC24FA039553CDB959F801AB68CB62F88A1719623D28D65C511032D337D1FD6EAC96CA679B24CAD39C4E90736ED6556D7D2E579722C6AF1E47E65B6DB25EC62CF59B66C13687112EF7BB00A4C3EC66D6721591DA3E7A79BE3AAAB07864680F4115EB80B1257DD0C67699DED2FE50F785BB4E67693D2D9C9E68F9D1C47886A06E0EE70DFB9C077EC9AC6E9E3FDB0AF1C7ABA052CCD3F5768DB6E6BC88658290295312BD792C6C0E680E1FC1AFF723C8C18F3F659F4C4D92E27F4B8C37A988C5F53F19C0702D6E319F9FF88F7A93DF63CE8FC1120A1D92EE8611F72AF0C8C4C094EE8AB2BC78E996A59FAFE1D6F800008DA561B2C280F8549AD8A0673BFFEA8C25006585282139188B3E0D81DFAD2C03E0DFFBB267FA8874E510A593156F669075D0F46DE2A9D2EC78B4319C341F8CDB865E12EA4F8F504BA02CF75394F3170AF7192DE055C6B9B7FA68807C9459616DD752F28EFFB85D714EF1B90FB374E9EADD7E36EB9A7D7D201BF9804E6BAEFA73B8EE33438086A54F851F252D09553072EEAB69C001A467D0A88357C60C779AF677989ECFBE129E3665F329F041CC4AE7BC46A4D3C4D0D570083A03F5F32B2BA0FB0048904E578D3ED0F1B2A5EB79460A3C3EDB928FD2F2DA8D361844301D230F8178DB3D917A6CB22B7DD6BE0C5DD8E7A9740C3052538C0B260DF6AC32E99996EC92AFA701DB34DB41F18B07D31CEE68CDCD2168A85655A70BC6137D28E3F7001B02203A7FAD6A79A31AC465967341CFD093391688CACF95210761109A6CDF8264E8612B47BB52CD8BC384CFE6F37B98FD6FB4B56D9924170AB5647370AA35EE70EBFF7EF732124B21BDC277038754C82F23DF718A3B1DDCA66CDD06BE8E4196E252F7948D867755CD2E9BA83CE7B12D1B7DDC0D9EA56603C7A9D1C176337D35A8B2A5CCD90F36FC52F12E0C48EC99BEB4E996ED02C7098416D6FDCA8D9F4D02C52815C9EE8A0900B16B1B3E2F414EF67C80D9716E7AB37AE4E1DEAC9213F1A2C8338F0B57139DF060F69F70228CFF611F7E7B4323D9A5D8ECB881BFB3038013FBFC52AE1E07F473AAB99084EE87718154A3286A3CC96B8D59840CCD9460B4FDE3023DEB278ADF573C2EF0DA9791661127CC7DDE53E013147B39619D03C066B390C82A6AE8AF8694EC0862EF98F3A0459FEB5A9BD2FF787D63E72194DB47A1C5252E5D57F97D12FF6104A5A68FF12F0B77062B5B16C812B99C58CDFBA87E27F7758C43F42E6CE16C7A7CC5E988E3FAC1D15";
// Convert data to process
byte[] key = ToByteArray(keyFromConfiguration);
byte[] iv = ToByteArray(ivFromHttpHeader);
byte[] authTag = ToByteArray(authTagFromHttpHeader);
byte[] encryptedText = ToByteArray(httpBody);
byte[] cipherText = encryptedText.Concat(authTag).ToArray();
// Prepare decryption
GcmBlockCipher cipher = new GcmBlockCipher(new AesLightEngine());
AeadParameters parameters = new AeadParameters(new KeyParameter(key), 128, iv);
cipher.Init(false, parameters);
// Decrypt
var plainText = new byte[cipher.GetOutputSize(cipherText.Length)];
var len = cipher.ProcessBytes(cipherText, 0, cipherText.Length, plainText, 0);
cipher.DoFinal(plainText, len);
Console.WriteLine(Encoding.ASCII.GetString(plainText));
}
static byte[] ToByteArray(string HexString)
{
int NumberChars = HexString.Length;
byte[] bytes = new byte[NumberChars / 2];
for (int i = 0; i < NumberChars; i += 2)
{
bytes[i / 2] = Convert.ToByte(HexString.Substring(i, 2), 16);
}
return bytes;
}
}
}
Function Calls
None |
Stats
MD5 | 4bfdd0fbfe46e1cd480cfb8e262b87c7 |
Eval Count | 0 |
Decode Time | 155 ms |