Em Por que minha criptografia não está… criptografando?Em uma entrevista com o senhor, muitos ficaram revoltados com a função defeituosa que publiquei. E com razão, pois havia um grande erro nesse código que praticamente invalida qualquer chamada “criptografia” que ele executa. Mas há um pequeno problema: Não fui eu que escrevi essa função.
Agora, certamente sou o senhor responsável por essa função, no sentido de que ela apareceu magicamente em nossa base de código um dia — e o projeto inteiro é a soma de todo o código contribuído por cada programador que trabalha nele. Eu invoco a função Primeira regra de programação: A culpa é sempre do senhor. E por “seu”, não me refiro ao programador específico que contribuiu com esse código, que permanecerá felizmente sem nome. Refiro-me a nós, a toda a equipe. A responsabilidade recai sobre nós, como equipe, de examinar cada linha de código no momento em que é contribuída, e constantemente revisar o código uns dos outros. É uma responsabilidade que assumimos juntos. Ninguém é dono do código, porque o o código é de todos.
Sim, eu falhei. Porque o equipe falhou.
Geoff Weinhold deixou este comentário profético na postagem:
A ironia disso é que, inevitavelmente, alguém virá até aqui em busca de exemplos de código de criptografia e copiará/colará cegamente seu código defeituoso.
De fato. Deus nos livre de alguém copiar e colar um código com defeito da Internet em seu projeto! Na verdade, uma rápida pesquisa sobre algumas das cadeias de caracteres exclusivas desse site original Encrypt()
original apresenta alguns resultados de pesquisa… interessantes…
Essa é apenas uma amostra dos 131 acessos que recebi na Web. Para parafraseando Austin Powers, este Encrypt()
A função é como a bicicleta do vilarejo: todo mundo já deu uma volta. É uma pena que o senhor particular por acaso, a bicicleta tem uma falta de freios incapacitante que a torna perigosa de pilotar, mas o que o senhor pode fazer?
Scott Hanselman cunhado uma bela frase para isso: a Internet como a parede de código do banheiro.
É verdade. As pessoas, sendo pessoas, foram e rabiscaram um monte de grafites de códigos aleatórios por toda a Internet. Alguns deles são tags de vaidade. Alguns são quase vandalismo. E alguns são arte. Como podemos distinguir isso?
Essa é a razão pela qual eu apresentei um modesta proposta para a escola de reutilização de código copiar e colar. Não que isso tivesse ajudado nesse caso, mas com certeza seria bom se alguém pudesse realizar uma substituição grep …
s/Mode = CipherMode.ECB/Mode = CipherMode.CBC/g
… em, como, toda a Internet. Assim, outros projetos não absorvem esse exemplo de código com falhas graves.
Nesse meio tempo, até que essa ferramenta seja desenvolvida, recomendo que o senhor aplique uma revisão por pares mais forte a todos os trechos de código que o senhor absorver em seu projeto a partir da parede de código do banheiro. Esse trecho de código da Internet que o senhor está vendo, aquele que parece ser exatamente o que o senhor está procurandoO senhor também pode ser um grafite aleatório rabiscado na parede de um banheiro.
É verdade que alguns banheiros são mais agradáveis do que outros. Mas, como aprendemos, vale a pena ter um cuidado especial ao copiar códigos da Internet.