Melhor implementação flexível de segurança de senha de trilhos [fechada]

Preciso implementar a segurança da senha com vários requisitos flexíveis. Os requisitos são essencialmente retirados doPolítica de senha sem:

Senhas fortes têm as seguintes características:

Contêm pelo menos três das cinco seguintes classes de caracteres:

Caracteres minúsculosCaracteres maiúsculosNúmerosPontuaçãoCaracteres "especiais" (por exemplo, @ # $% ^ & * () _ + | ~ - = `{} []:"; '<> / etc)Contenha pelo menos quinze caracteres alfanuméricos.

Também existem requisitos para não permitir que o endereço de email dos usuários apareça na senha.

Idealmente, eu gostaria de uma jóia que resolvesse isso - seria mais amplamente testada e usada, e teríamos menos chances de ter bugs.

Se nenhuma gema cobre isso, qual é o melhor e mais rígido método para lidar com esses requisitos? Idealmente, poderíamos dizer que não apenas estamos seguros, mas também seguros porque temos uma implementação padrão do setor.

As jóias que encontrei até agora são:

Criar extensões de segurança, que possui uma regex muito simples para verificar se há maiúsculas, minúsculas e dígitos

e

Senha forte, que parece fornecer apenas uma verificação de entropia para informar ao usuário se a senha é forte.

(Estamos usando o Rails 3.2.17 e o Ruby 1.9.3, mas planejamos mudar para o Rails 4 e o Ruby 2 em breve, para que soluções mais recentes também sejam bem-vindas).

questionAnswers(2)

yourAnswerToTheQuestion