Skip to content

Instantly share code, notes, and snippets.

@andy-uq
Last active June 14, 2017 02:52
Show Gist options
  • Save andy-uq/b2a123d1941213bdb89081bfa877cc9a to your computer and use it in GitHub Desktop.
Save andy-uq/b2a123d1941213bdb89081bfa877cc9a to your computer and use it in GitHub Desktop.
void Main()
{
var storage = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=en7343;AccountKey=VdJRm1PbyQ8YOrd3gR+CMcS5YQge6H4XMMaNpR2DBhDxV/0A/lQT+SXnNnQbx0xqyLTQVnY5+DwwEYCXWqFm3g==;EndpointSuffix=core.windows.net");
var client = storage.CreateCloudBlobClient();
var container = client.GetContainerReference("test-06");
container.CreateIfNotExists();
CreateData(container);
ReadData(container);
//-- Encrypt --//
ReadData(container);
CreateEncryptedData(container);
AppendData1(container);
ReadAppendedData(container);
// -- Decrypt --//
ReadAppendedData(container);
AppendData2(container);
ReadFinalData(container);
}
// Define other methods and classes here
public void CreateData(CloudBlobContainer container)
{
var textBlob = container.GetBlockBlobReference("readme.txt");
if (!textBlob.Exists())
{
textBlob.UploadText("README.TXT");
}
var appendBlob = container.GetAppendBlobReference("append.bin");
if (!appendBlob.Exists())
{
appendBlob.CreateOrReplace();
var block = Enumerable.Range(0, 1024).Select(i => (byte)i).ToArray();
appendBlob.AppendBlock(new MemoryStream(block));
}
}
public void ReadData(CloudBlobContainer container)
{
var textBlob = container.GetBlockBlobReference("readme.txt");
if (textBlob.Exists())
{
var text = textBlob.DownloadText();
Console.WriteLine($"{text} => README.TXT {text == "README.TXT"}");
}
var appendBlob = container.GetAppendBlobReference("append.bin");
if (appendBlob.Exists())
{
var ms = new MemoryStream();
appendBlob.DownloadToStream(ms);
var content = ms.ToArray();
Console.WriteLine($"{string.Join(" ", content.Select(b => b.ToString("d2")).Take(4))} => 00 01 02 03 {content.SequenceEqual(Enumerable.Range(0, 1024).Select(i => (byte)i))}");
}
}
public void AppendData1(CloudBlobContainer container)
{
var appendBlob = container.GetAppendBlobReference("append.bin");
var block = Enumerable.Range(0, 256).Select(i => new byte[] { 0xDe, 0xad, 0xBe, 0xef }).SelectMany(b => b).ToArray();
appendBlob.AppendBlock(new MemoryStream(block));
}
// Define other methods and classes here
public void CreateEncryptedData(CloudBlobContainer container)
{
var textBlob = container.GetBlockBlobReference("encrypted-readme.txt");
if (!textBlob.Exists())
{
textBlob.UploadText("README.TXT");
}
var appendBlob = container.GetAppendBlobReference("encrypted-append.bin");
if (!appendBlob.Exists())
{
appendBlob.CreateOrReplace();
var block = Enumerable.Range(0, 1024).Select(i => (byte)i).ToArray();
appendBlob.AppendBlock(new MemoryStream(block));
}
}
public void ReadAppendedData(CloudBlobContainer container)
{
var appendBlob = container.GetAppendBlobReference("append.bin");
var ms = new MemoryStream();
appendBlob.DownloadToStream(ms);
var content = ms.ToArray();
var pattern = Enumerable.Range(0, 1024).Select(i => (byte)i)
.Concat(Enumerable.Range(0, 256).Select(i => new byte[] { 0xDe, 0xad, 0xBe, 0xef }).SelectMany(b => b));
Console.WriteLine($"{string.Join(" ", content.Skip(1024).Select(b => b.ToString("X2")).Take(4))} => DE AD BE EF {content.SequenceEqual(pattern)}");
var encryptedTextBlob = container.GetBlockBlobReference("encrypted-readme.txt");
var text = encryptedTextBlob.DownloadText();
Console.WriteLine($"{text} => README.TXT {text == "README.TXT"}");
var encryptedAppendBlob = container.GetAppendBlobReference("encrypted-append.bin");
var ms2 = new MemoryStream();
encryptedAppendBlob.DownloadToStream(ms2);
var content2 = ms2.ToArray();
pattern = Enumerable.Range(0, 1024).Select(i => (byte)i);
Console.WriteLine($"{string.Join(" ", content2.Select(b => b.ToString("X2")).Take(4))} => 00 01 02 03 {content2.SequenceEqual(pattern)}");
}
public void AppendData2(CloudBlobContainer container)
{
var appendBlob = container.GetAppendBlobReference("append.bin");
var block = Enumerable.Range(0, 256).Select(i => new byte[] { 0xB1, 0x6B, 0x00, 0xB5 }).SelectMany(b => b).ToArray();
appendBlob.AppendBlock(new MemoryStream(block));
}
public void ReadFinalData(CloudBlobContainer container)
{
var appendBlob = container.GetAppendBlobReference("append.bin");
var ms = new MemoryStream();
appendBlob.DownloadToStream(ms);
var content = ms.ToArray();
var pattern = Enumerable.Range(0, 1024).Select(i => (byte)i)
.Concat(Enumerable.Range(0, 256).Select(i => new byte[] { 0xDe, 0xad, 0xBe, 0xef }).SelectMany(b => b))
.Concat(Enumerable.Range(0, 256).Select(i => new byte[] { 0xB1, 0x6B, 0x00, 0xB5 }).SelectMany(b => b))
;
Console.WriteLine($"{string.Join(" ", content.Skip(2048).Select(b => b.ToString("X2")).Take(4))} => DE AD BE EF {content.SequenceEqual(pattern)}");
var encryptedTextBlob = container.GetBlockBlobReference("encrypted-readme.txt");
var text = encryptedTextBlob.DownloadText();
Console.WriteLine($"{text} => README.TXT {text == "README.TXT"}");
var encryptedAppendBlob = container.GetAppendBlobReference("encrypted-append.bin");
var ms2 = new MemoryStream();
encryptedAppendBlob.DownloadToStream(ms2);
var content2 = ms2.ToArray();
pattern = Enumerable.Range(0, 1024).Select(i => (byte)i);
Console.WriteLine($"{string.Join(" ", content2.Select(b => b.ToString("X2")).Take(4))} => 00 01 02 03 {content2.SequenceEqual(pattern)}");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment