Как прокомментировал @MitchWheat, mysql поддерживает различные функции шифрования : MD5, SHA, SHA1 и SHA2, ...
Однако использование автоматического хеширования в качестве первичного ключа не являетсяхорошая практика.
Прежде всего, автоинкрементное целое число всегда будет работать лучше, чем хеш;его легче вставлять, получать к нему доступ и индексировать, а также требуется меньше места для хранения.Еще одна вещь состоит в том, что, используя хеш, вы подвергаете себя (небольшому, но реальному) риску столкновения.
Во-вторых, реализовать автоматический хеш намного сложнее, чем целочисленное с автоинкрементом.Поскольку функции не могут использоваться в качестве значений по умолчанию для столбцов, вам потребуется использовать триггер и, возможно, отдельную таблицу для секвенирования.См. этот ответ SO для демонстрации этой установки.
Промежуточным вариантом будет полагаться на определенное поле или комбинацию полей, которые вы автоматически хешируете перед вставками (и обновления) использование триггера для генерации первичного ключа.
Что-то вроде:
DELIMITER $$
CREATE TRIGGER tg_bi_table1
BEFORE INSERT ON table1
FOR EACH ROW
BEGIN
SET NEW.id = MD5(CONCAT(NEW.field_to_hash1, NEW.field_to_hash2));
END$$
DELIMITER ;