2016-08-02 20 views
0

GPGを使用してJSON配列を暗号化する必要があります。長さが2083文字を超えると、2083文字以下にする必要があるJSON配列を分割する必要があります。長さに基づく分割Json配列

これを達成するには、最初に配列を暗号化し、その長さを2083以下でチェックします。それを超えると、配列を複数の配列に分割して暗号化します。

これを行うにはどうすればよいですか?例えばのための

:私はこの配列を暗号化する場合

var a = new List<int> { 1,2,3 etc}; 

、単なる文字列は、この

hQEMA%2Fgo0kYbZeCoAQf8DDemzoWdhq97ULWXvTw4v1fFMq%2F%2BO9z%2FYClDvON 

ようなものになると上記の文字列が2083の文字を超える場合、私は分割されますと仮定します考えます以下のような配列を作成し、再度暗号化してください。

var a = new List<int> { 1,2}; 
var b = new List<int> { 3, 4}; 
var c = new List<int> { 5, 6 etc.}; 

いずれかのアイデアはありますか?

答えて

0

私はsoのようなメソッドを作成し、再帰的に呼び出します。メソッドが汎用的であり、List<int>に制約されていないことに注意してください。それが必要でない場合は削除してください。

private const int maxLength = 2083; 
public List<string> EncryptList<T>(List<T> list) 
{ 
    List<string> encryptedLists = new List<string>(); 

    string encrypted = PerformEncryption(); 
    if (encrypted.Length > maxLength) 
    { 
     encryptedLists.AddRange(EncryptList<T>(list.Take(list.Count/2).ToList())); 
     encryptedLists.AddRange(EncryptList<T>(list.Skip(list.Count/2).ToList())); 
    } 
    else 
    { 
     encryptedLists.Add(encrypted); 
    } 

    return encryptedLists; 
} 

if文の内部が正しく動作しない可能性があるので、このコードはテストしていません。

+0

ist.Count/2 - 再び2083文字より上になるとどうなりますか?同じリストにも追加しています。 –

+0

それは 'AddRange'パーツで再帰的に呼び出され、yopuが欲しいものをするための暗号化された文字列のリストを返します – TheLethalCoder

関連する問題