В принципе, вам не нужно создавать собственные методы шифрования/дешифрования. Могу я спросить, почему вы пытаетесь его зашифровать. Это потому, что у вас есть этот сценарий?
http://url/controller/id1
http://url/controller/id2
И, следовательно, причина вашего шифрования будет заключаться в том, чтобы другие не могли просматривать другие запросы, если есть другие альтернативы шифрованию. Например, я работаю над чем-то подобным, но вместо всех накладных расходов на шифрование я сделал это так, что если указан идентификатор, он также должен предоставить имя пользователя для этого идентификатора.
http://url/controller/id1?username=username
http://url/controller/id1?username=username2
Когда я получаю идентификатор, я также проверяю, есть ли параметры имени пользователя и совпадает ли имя пользователя с идентификатором имени пользователя - это останавливает других от троллинга по ссылкам.
Если вы все еще хотите зашифровать, дайте мне знать, и я могу дать вам дополнительные рекомендации.
def MyController {
def index() {
if (params.id) {
params.id=Md5Helper.translate(params.id)
}
}
}
in src/groovy/main/{package}/Md5Helper.groovy
class Md5Helper.groovy {
//return deconverted string into Long value
public static Long translate(String input) {
//do your md5 decryption here
if (result.isNumber()) {
return result as Long
}
return 0L
}
//override so when default Long is sent just return it
public static Long translate(Long input) {
return input
}
}
CompileStatic вспомогательный класс, если выше grails 2.4 и выполненная работа
Отказ от шифрования md5 и использование надлежащего внутреннего шифрования/дешифрования с ключом, который вы можете изменить, сделав его нешифруемым конечным пользователем, см. https://github.com/vahidhedayati/md5id/
person
V H
schedule
20.04.2017