Добър или лош, един алгоритъм за криптиране се определя от това каква степен на сигурност (защита) искаме да постигнем. Ако правилно съм разбрал кода, криптирането се свежда до просто еднозначно прекодиране на символи, което е много лесно за разбиване като код, ако за някой представлява интерес разбира се.
Колкото до рекурсия:
Казва се, че един обект е рекурсивен, ако той частично се съдържа в себе си или е дефиниран чрез себе си.
Тука аз не виждам такова определение.
Но да се върнем към част от кода:
ch[j] = (char)((int)bobo[i].name[j] + 32 + 43 + 21 - 11 + 54);
От програмна гледна точка не виждам смисъл от прибавянето и изваждането на поредица от числови константи към дадена променлива. Ако формализираме горния код то:
ch[j] = (char)((int)bobo[i].name[j] + 32 + 43 + 21 - 11 + 54);
е еквивалентно на :
ch[j] = (char)((int)bobo[i].name[j] + (32 + 43 + 21 - 11 + 54));
което от своя страна пък е:
ch[j] = (char)((int)bobo[i].name[j] + 139);
Другият въпрос, който поражда този израз е:
Ами ако bobo[i].name e ASCII символ (0..0xff) или е utf8 код и стойността на
bobo[i].name[j] = 0xff, ако е ASCII или bobo[i].name[j] = 0xffff, ако е utf8 какво се случва???
От гледна точка на оптимизация на кода е по-добре криптирането и декриптирането на даден символен низ да се отделят в отделни функции:
private string encryptString( string str);
private string decryptString* string str);