Следующий код является оперативной перестановкой данного списка, реализованного как генератор. Так как это только возвращает ссылки на список, список не должен быть изменен вне генератора. Решение нерекурсивно, так использование низкая память. Работа хорошо также с несколькими копиями элементов во входном списке.
def permute_in_place(a):
a.sort()
yield list(a)
if len(a) <= 1:
return
first = 0
last = len(a)
while 1:
i = last - 1
while 1:
i = i - 1
if a[i] < a[i+1]:
j = last - 1
while not (a[i] < a[j]):
j = j - 1
a[i], a[j] = a[j], a[i] # swap the values
r = a[i+1:last]
r.reverse()
a[i+1:last] = r
yield list(a)
break
if i == first:
a.reverse()
return
if __name__ == '__main__':
for n in range(5):
for a in permute_in_place(range(1, n+1)):
print a
print
for a in permute_in_place([0, 0, 1, 1, 1]):
print a
print
Я считаю, что есть два способа сделать это:
с использованием aspnet_regiis с использованием DPAPI или RSA , или делать это программно .
Программный способ может быть удобен, особенно если вы также хотите зашифровать app.config.
Исходя из моего опыта использования этого, если вы пишете настраиваемый раздел конфигурации, вы должны установить DLL, содержащую классы для этого раздела, в GAC. Для проекта, над которым я работал, я в основном написал следующий подход:
Скорее всего, если вы просто шифруете строки подключения, тогда это не будет проблемой. Вы также должны иметь в виду, хотите ли вы зашифровать на всей машине или для конкретной учетной записи пользователя - оба варианта могут быть полезны в зависимости от вашего сценария. Для простоты я придерживался машинного шифрования. Ссылки, которые я предоставил, объясняют достоинства обоих подходов.
Вот команды для шифрования файла web.config без какого-либо программирования ...
Для шифрования
aspnet_regiis -pef "Section" "Path exluding web.config"
Для дешифрования
aspnet_regiis -pdf "Section" "Path exluding web.config"
С помощью этих команд вы можете зашифровать или расшифровать весь раздел .
Вы пробовали это: http://weblogs.asp.net/scottgu/archive/2006/01/09/434893.aspx
Использование средства командной строки aspnet_regiis.exe
Вы также можете зашифровать и расшифровать разделы в файле Web.config с помощью средства командной строки aspnet_regiis.exe, которое можно найти в каталог% WINDOWSDIR% \ Microsoft.Net \ Framework \ version.
Посмотрите здесь: http://aspnet.4guysfromrolla.com/articles/021506-1.aspx .
Используйте инструмент aspnet_regiis в каталоге вашей платформы:
-- CONFIGURATION ENCRYPTION OPTIONS --
pe section Encrypt the configuration section. Optional arguments:
[-prov provider] Use this provider to encrypt.
[-app virtual-path] Encrypt at this virtual path. Virtual path must begin with a forward slash.
If it is '/', then it refers to the root of the site. If -app is not specified, the root
web.config will be encrypted.
[-site site-name-or-ID] The site of the virtual path specified in -app. If not specified, the
default web site will be used.
[-location sub-path] Location sub path.
[-pkm] Encrypt/decrypt the machine.config instead of web.config.
pd section Decrypt the configuration section. Optional arguments:
[-app virtual-path] Decrypt at this virtual path. Virtual path must begin with a forward slash.
If it is '/', then it refers to the root of the site. If -app is not specified, the root
web.config will be decrypted.
[-site site-name-or-ID] The site of the virtual path specified in -app. If not specified, the
default web site will be used.
[-location sub-path] Location sub path.
[-pkm] Encrypt/decrypt the machine.config instead of web.config.
Вы должны начать отсюда, простое, хорошо объясненное пошаговое руководство в MSDN: Как: зашифровать разделы конфигурации в ASP.NET 2.0 с помощью DPAPI