Have you tried the lifecycle hook?
i believe the right choice for your use-case is to use the lifecycle hook beforeCreate
import { createHash } from 'node:crypto'
module.exports = {
async beforeCreate(obj) {
let { params } = obj // attributes model, state
const password = obj.data.PASSWORD_FIELD // Original value from request
// Overide the value with hashed / encrypted value
params.data.PASSWORD_FIELD = createHash('md5').update(password).digest('hex')
}
}
You can read more about it here Understanding the different types/categories of Strapi Hooks